in reply to File not opening, but no error report

open (IN, "$file") || die $!
You'll want to change that to:
open (IN, "$path/$file") || die $!;
readdir does not return the directory part of the filename, so you need to either add the directory path to the file, or chdir to the directory before opening the file.

Update: but if you're executing the program from that directory anyway, then that's not your problem.