open my $fh, shift or die "Cannot open file: $!\n"; #### # do all the assignments from ARGV here my $filename = shift @ARGV or die "A filename parameter is required"; # explicitly open for read; and make sure filename is in the error message for reference open FILE, '<', $filename or die "Cannot open file '$filename': $!\n"; while(){ ... } close FILE; #### use Data::Dumper; die Dumper \@ARGV; # see what's really in there ...