Попробуйте использовать имя, отличное от "CHECK" .
«CHECK» - это специальная функция, которая вызывается во время компиляции, и вы действительно не должны ее использовать.
$ open CHECK , '<', 'foo.txt';
Took 0.00224494934082031 seconds.
Runtime error: Undefined subroutine &Devel::REPL::Plugin::Packages::DefaultScratchpad::CHECK called at (eval 329) line 5.
$ open CHECKS , '<', 'foo.txt';
Took 0.00155806541442871 seconds.
$
Почему именно эта ошибка?
perl -MO=Deparse -e 'print CHECK Data::Dumper 1';
print 'Data::Dumper'->CHECK(1);
Кроме того, вы используете глобальные файловые дескрипторы , которые проблематичны.
используйте эту запись:
open my $fh, '<' , $foo ;
print <$fh>;
close $fh;
Они особенно полезны, если они закрываются, когда выходят за рамки видимости.