It works for me . Thanks

Sudhakar Gajjala





Chris Devers <[EMAIL PROTECTED]> on 08/30/2004 10:47:55 PM

Please respond to [EMAIL PROTECTED]

To:    Sudhakar Gajjala/C/[EMAIL PROTECTED]
cc:    [EMAIL PROTECTED]
Subject:    Re: How do i run shell command


On Mon, 30 Aug 2004 [EMAIL PROTECTED] wrote:

> I was trying to run System command from my perl Script . As i have pipe
( |
> Anybody help me how to run shell command in Perl
>
> Here is the command :  system "cat $filename | wc -l";

You realize, of course, that this can be done entirely in Perl ?

Quoting from the excellent _Perl Cookbook_:

     [...] you can emulate wc by opening up and reading the file yourself:

         open(FILE, "< $file") or die "can't open $file: $!";
         $count++ while <FILE>;
         # $count now holds the number of lines read

     Another way of writing this is:

         open(FILE, "< $file") or die "can't open $file: $!";
         for ($count=0; <FILE>; $count++) { }

     If you're not reading from any other files, you don't need the $count
     variable in this case. The special variable $. holds the number of
     lines read since a filehandle was last explicitly closed:

         1 while <FILE>;
         $count = $.;

     This reads all the records in the file and discards them.

But if you really do need to do this via a system command -- you don't,
but I'll play along -- then the command as you've given it is what is
known as a Useless Use Of Cat.

This command --

     cat file | wc -l

-- is equivalent to this one --

     wc -l file

-- but the latter invokes less overhead, and so should be a bit faster.

Unless you really are conCATenating a chain of files together, most
commands of the form "cat foo | cmd" can be rewritten as "cmd foo" or,
maybe, "cmd < foo".



--
Chris Devers      [EMAIL PROTECTED]
http://devers.homeip.net:8080/blog/

np: 'It's Not Easy Being Green (lo-fi midi version)'
      by Kermit
      from 'The Muppet Movie Soundtrack'











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


Reply via email to