my $filename = shift // die "Usage: $0 \n"; my $fh = *STDIN; if (filename ne '-') { open $fh, '<', $filename or die "Can't open $filename: $!"; } while (<$fh>) { # Process lines of input } #### use 5.012; use warnings; use autodie; my $filename = shift // die "Usage: $0 \n"; open STDIN, '<', $filename if $filename ne '-'; while () { ... }