http://www.perlmonks.org?node_id=89617


in reply to Forking Multiple Children

You appear to be passing the commands in to the standard input of the program. If there isn't a good reason for that then you can pass them on the command line:

my ($command1, $command2, $command3) = @ARGV; $command2 = 'default' unless defined $command2; $command3 = 'hoo hah' unless defined $command3; # OR my $command1 = shift or die; # Ideally call a subroutine to print usag +e and die my $command2 = shift || 'default'; my $command3 = shift || 'hoo hah';

If you have to read from STDIN then you can check to see if it still has stuff available using the eof function:

my $command1 = <STDIN>; chomp($command1); my ($command2, $command3) = ('default', 'hoo hah'); unless (eof(STDIN)) { $command2 = <STDIN>; chomp $command2; unless (eof(STDIN)) { $command3 = <STDIN>; chomp $command3; } }

-ben