Net::SSH::Perl->Execute any unix command & display the output in a proper form

Net::SSH::Perl ...... how to print the output in a proper format

   my $cmd = "ls -l"; 
   my $ssh = Net::SSH::Perl->new($host);
   $ssh->login($user, $pass);
   my($stdout, $stderr, $exit) = $ssh->cmd("$cmd");
   print $stdout; 

the script works fine, but i am unable to see the output getting displayed in a correct format.
i.e output of the above script is as follows:

total 79936 -rw-r--r-- 1 readonly bin 306 Feb 13 2008 a1.sh -rw-r--r-- 1 readonly bin 216 Oct 11 2007 accesslog1.sh -rw-r--r-- 1 readonly bin 216 Oct 11 2007 accesslog2.sh -rw-r--r-- 1 readonly bin 1248 Feb 13 2008 ca.log -rw-r--r-- 1 readonly bin 38143 Jul 17 2008 17072008_Run2 drwxr-xr-x 2 readonly bin 4096 Apr 9 2008 s -rw-r--r-- 1 readonly bin 14739 Jul 17 2008 07172008_Run2 -rw-r--r-- 1 readonly bin 15152 Jul 16 2008 17_07_2008

Instead of displaying the output as,

total 79936
-rw-r--r-- 1 readonly bin 306 Feb 13 2008 a1.sh
-rw-r--r-- 1 readonly bin 216 Oct 11 2007 accesslog1.sh
-rw-r--r-- 1 readonly bin 216 Oct 11 2007 accesslog2.sh
-rw-r--r-- 1 readonly bin 1248 Feb 13 2008 ca.log

Though at present i am having a solution where we can split the output of 'ls' command i.e $stdout which will be of this format...

-rw-rw-rw- 1 root dir 104 Dec 25 19:32 filename

we can split the above output as fields i.e at filename field and we can assign this to an array and there by we can print/read the array. Which will print as follows

total 79936
-rw-r--r-- 1 readonly bin 306 Feb 13 2008 a1.sh
-rw-r--r-- 1 readonly bin 216 Oct 11 2007 accesslog1.sh
-rw-r--r-- 1 readonly bin 216 Oct 11 2007 accesslog2.sh

But this is just a temporary solution which works fine for 'ls -l' command. But if we wish to execute any other commands such as "ls", "cat" and so on... it wont work, i mean again the output of these "ls", "cat" will be in improper format.

i am looking for some way/solution where we can print the output { as if executing a command in a unix box displays the output in a clear format.} At present i am using CGIPerl Script to display the output on a browser and i am able to print the output on a browser in this way ....

total 79936 -rw-r--r-- 1 readonly bin 306 Feb 13 2008 a1.sh -rw-r--r-- 1 readonly bin 216 Oct 11 2007 accesslog1.sh -rw-r--r-- 1 readonly bin 216 Oct 11 2007 accesslog2.sh -rw-r--r-- 1 readonly bin 1248 Feb 13 2008 ca.log -rw-r--r-- 1

Thanks in Advance,
GS

There's your problem. Wrap the output with

<pre> ... </pre>

.Some code like this should help:

print "<pre>\n".$stdout."\n</pre>\n";

Thanks much Otheus

It works fine.... Thank you once again.