On 07/28/2010 05:53 PM, Stuart Cooper wrote: > Hi Damian, > >> my $first_line = `grep -v '#' $filename|head -n 1`; # to get the first >> non-comment line > --extra code deleted--
> It's a broken pipe because the right side of it is not valid. Could you elaborate on why? I tried it and it worked for me. > > Try playing around with this 10-liner: > > #!/usr/bin/perl > use strict; > use warnings; > > $SIG{'PIPE'} = 'IGNORE'; > # $SIG{'PIPE'} = 'DEFAULT'; > > my $filename = '/etc/apache2/apache2.conf'; > my $first_line; > > # $first_line = `grep -nv '#' $filename| misspelledhead -n 1`; # to > get the first non-comment line > $first_line = `grep -nv '#' $filename| head -n 1`; # to get the first > non-comment line > > print "first non comment line is $first_line"; > > Good luck, > Stuart. In fact, I tried your code snippets as well as the OP's, and the only error I saw, with a misspelled command name, was: sh: ehead: command not found I tried this without changing any signal and with "$SIG{'PIPE'} = 'IGNORE'", no difference. In other words, the shell, when setting up the command, verifies it can find all commands in the pipe sequence before it tries anything else. Now, when I gave 'head' an invalid option, so it was found and ran, but exited *without* reading the input, then I got the broken pipe error. But I also got an error from 'head' about invalid options. Bottom line is I can't figure out what it is that is 'not valid' in the original? -- Bob McGowan