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>