Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

Re: Shell Commands executed in perl script

by betterworld (Curate)
on May 22, 2007 at 11:43 UTC ( [id://616732]=note: print w/replies, xml ) Need Help??


in reply to Shell Commands executed in perl script

Why use awk inside Perl?
my $i=0; print map { (split)[8]; } grep { ! /^d/ && ! /file1/ && $i++ } `ls -l ./logs/`;
BTW, my ls -l output does not have 9 fields (only for symlinks, where the ninth field is "->"). I guess you can get rid of the shell call altogether if you use stat() and glob() (or readdir() or IO::Dir).

Replies are listed 'Best First'.
Re^2: Shell Commands executed in perl script
by johngg (Canon) on May 22, 2007 at 20:17 UTC
    It's six of one and a half dozen of the other, I suppose, but I would prefer to dispense with the unwanted first line another way.

    $ ls -l total 4 -rw-r--r-- 1 root root 0 May 22 21:09 accts drwxr-xr-x 2 root root 512 May 22 21:10 dir1 -rw-r--r-- 1 root root 0 May 22 21:09 file1 -rw-r--r-- 1 root root 0 May 22 21:09 file1.log -rw-r--r-- 1 root root 0 May 22 21:09 file13 -rw-r--r-- 1 root root 0 May 22 21:09 fred drwxr-xr-x 2 root root 512 May 22 21:10 staff $ perl -Mstrict -Mwarnings -e ' > open my $lsFH, q{-|}, q{ls -l} > or die $!; > scalar <$lsFH>; > print > map { qq{@{ [ (split)[8] ] }\n} } > grep { m{^[^d]} && ! m{file1} } > <$lsFH>;' accts fred $

    Using a filehandle and a scalar read gets rid of the first line before the loop and avoids the extra test each time in the grep.

    Cheers,

    JohnGG

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://616732]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others avoiding work at the Monastery: (5)
As of 2024-03-29 00:03 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found