perl myprog.pl fred.txt - barney.txt #### my $fname = '-'; ... ... my $INFILE; if(!open ($INFILE, "<", $fname)) { print "current file name: $fname\n"; die ".....$!"; } #### current file name: - .....No such file or directory ... #### use strict; use warnings; if (!@ARGV) { push @ARGV, '-'; } foreach my $arg (@ARGV) { print "$arg\n"; } while(my $fname = pop @ARGV) { my $INFILE; if ($fname eq '-') { $INFILE = *STDIN; }else{ if(!open ($INFILE, "<", $fname)) { say "current file name: $fname"; die ".....$!"; } } my @lines = <$INFILE>; foreach (reverse @lines) { print; } close $INFILE; } --output:--- data1.txt - data2.txt D #start output from data2.txt C B A #end output from data2.txt x #start STDIN input y z #end STDIN input zD #This started off as a blank line where I hit control-D for eof. y x line 4 #start output from data1.txt line 3 line 2 line 1 #end output from data1.txt