突っ込みどころはいろいろあるけど、エラーメッセージは自分のためにも他人のためにもわかりやすくすべし。

my $fp_in = IO::File->new($filename, "<") or die qq(cannot open '$filename': $!);