Todd Chester has asked for the wisdom of the Perl Monks concerning the following question:
Dear Perl Monks,
perl-5.16.3-286.el7.x86_64
I seek the following wisdom. I am trying to create a sample .pl script to demonstrate how to:
1) read a pipe and read parameters at the same time, and
2) not hang if the pipe is empty
This is basically the thing I am trying to demonstrate:
ls -al | grep -i xxx
where the grep both reads parameters and the pipe.
This is what I have so far and the resulting errors (I still hang on an empty pipe)
#!/usr/bin/perl use strict; use warnings; my $Pipe= ""; while (<>){ # replaced in Perl 5.22 with "for ( @ARGV )" # Reference: http://www.perlmonks.org/?node_id=1175906 # for ( @ARGV ) { $Pipe .= $_; } print "This was read from the pipe:\n"; print "<$Pipe>\n\n"; print "This was the read from the parameters:\n"; print "<@{ARGV}>\n"; __END__
$ ( echo Hi; sleep 3; echo Bye ) | ./ReadAPipe.pl 1 2 3 4
Can't open 1: No such file or directory at ./ReadAPipe.pl line 9.
Can't open 2: No such file or directory at ./ReadAPipe.pl line 9.
Can't open 3: No such file or directory at ./ReadAPipe.pl line 9.
Can't open 4: No such file or directory at ./ReadAPipe.pl line 9.
This was read from the pipe:
<>
This was the read from the parameters:
<>
Many thanks,
-T
Back to
Seekers of Perl Wisdom