Stephen Kratzer wrote: > On Thursday 10 July 2008 05:59:36 Anirban Adhikary wrote: >> Dear list >> I want to capture the output of w and then I want to do some job as per the >> o/p of w command in my linux system. So i have written the code as follows >> >> use strict; >> use warnings; >> >> open (LS, "w|") or die "can't open w: $!"; >> my @arr = <LS>; >> close (LS); >> shift @arr; >> shift @arr; >> my($one,$two,$three,$four,$five,$six,$seven,$eight); >> >> foreach my $el(@arr) >> { >> ($one,$two,$three,$four,$five,$six,$seven,$eight) = split(/ /,$el); >> print $five."\n"; >> } >> but the problem is as per the o/p of w command I want to extract the fifth >> field but by using the above code I am not able to do this. The o/p of who >> command in my system is as follows >> >> USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT >> bighosh pts/1 bighosh.in.conne 13:48 38:03 0.16s 0.06s sshd: >> bighosh [priv] >> nchatter pts/2 nchatterjee.in.c 10:31 15:38 0.68s 0.65s -bash >> anadhika pts/3 anadhikary.in.co 15:10 0.00s 0.04s 0.00s w >> suray pts/4 suray1.in.connec 12:36 46:43 0.04s 0.04s -bash >> merge pts/5 sasarkar.in.conn 12:00 5:44 0.11s 0.11s -bash >> dpghosh pts/6 dpghosh.in.conne 12:09 1:32 0.07s 0.01s sshd: >> dpghosh [priv] >> anadhika pts/7 anadhikary.in.co 13:50 10.00s 0.12s 0.12s -bash >> >> I need to extract the idle column. But using my code I am getting output >> like this >> >> >> pts/4 >> pts/5 >> >> Where I am making the mistake............ please rectify..... >> >> Thanks & Regards in advance >> Anirban Adhikary > > Anirban, > > The output of 'w' is delimited by whitespace, not necessarily a single space. > Try passing the pattern '\w+' to split. Something like this:
I think you mean /\s+/. > #!/usr/bin/perl > > use strict; > use warnings; > > open (LS, "w|") or die "can't open w: $!"; > > <LS>; > <LS>; > > while (<LS>) { > print ((split)[4], "\n"); > } split with no parameters defaults to a separator pattern of ' ', i.e. a literal space, which is a special case. It has the same effect as splitting on /\s+/ but also discards any empty leading field in the case where the object string starts with whitespace, and is exactly what is wanted here. Rob -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/