Anirban Adhikary wrote:
Dear List

Hello,

I am facing the following problem.While running the below mentioned code

You should have these two lines at the beginning of your Perl program:

use warnings;
use strict;


open(WHO, "who|")or die "can't open who: $!";
@arr = <WHO>;
close(WHO);
print $arr[2]."\n";


I am getting this output ---  root     tty3         2008-02-24 12:58 . But
when i am trying to extract the 3 rd filed by using
$a = $arr[2]
@arr2 = split(/ /, $a);
print $arr2[2]."\n";

 I am not getting any output . Please guide me

You are using the regular expression / / which matches a single space character so $arr2[2] will contain the string '':

$ perl -le'
$a = "root     tty3         2008-02-24 12:58";
print ">$_<" for split / /, $a;
'
>root<
><
><
><
><
>tty3<
><
><
><
><
><
><
><
><
>2008-02-24<
>12:58<

You need to use a regular expression that will match more than one space character:

$ perl -le'
$a = "root     tty3         2008-02-24 12:58";
print ">$_<" for split / +/, $a;
'
>root<
>tty3<
>2008-02-24<
>12:58<

Or use the special split first argument of a *string* with a single space character:

$ perl -le'
$a = "root     tty3         2008-02-24 12:58";
print ">$_<" for split " ", $a;
'
>root<
>tty3<
>2008-02-24<
>12:58<


perldoc -f split


Another case when running the same code for ls -l/

open (LS, "ls -l|") or die "can't open ls -l: $!";
@arr = <LS>;
close (LS);
foreach(@arr)
    {
    @arr1 = split(/ /,$_);
    }
foreach $perm (@arr1)
 {print "$perm\n"; }

I am getting the last entry from ls -l listing.

That is because @arr1 is changed each time through the loop so only the last line is in the array when the loop ends.


How can I get the entire
listing of ls -l command's output in an array??

perldoc -f push


John
--
Perl isn't a toolbox, but a small machine shop where you
can special-order certain sorts of tools at low cost and
in short order.                            -- Larry Wall

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to