open (INP, "<", "$filename") or die "cannot open input file";
You may want to
- not interpolate the variable, just use it as is - why restringify something that you think should already be a string.
- use lexical file handles - it will allow it to fall out of scope rather than being a global. Forcing yourself to think of the scoping of variables can be good when trying to make your code modular.
- include the error message in the error response - it will help to debug why the file was not able to be opened. Was it due to too many files being opened, permissions being wrong on the file, the file not existing, sunspots...?
Update: I see that the OP has done two of the three of these already -- this comment is targeted at the parent post. :-)
open (my $inputFH, "<", $filename)
or die "cannot open input file: $!";