http://qs1969.pair.com?node_id=1176039

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