use IO::Select; # Get a list of hosts from either a file or STDIN my @hosts; if($#ARGV != -1) { my $file = $ARGV[0]; if(! -f $file) { die "File $file doesn't exist\n" } open FH, "<$file" or die "Failed to open file $file: $!\n"; @hosts = ; close FH; } else { my $sel = IO::Select->new(); $sel->add(\*STDIN); my @ready = $sel->can_read(0); if($#ready == -1) { die <<__USAGE__; usage: do_something [file] ... __USAGE__ } @hosts = ; }