Perl eval没有捕获异常

Eri*_*sum 1 perl exception-handling exception

为什么Perl没有捕获此异常?

my $fh;
eval { close $fh };
warn('Caught') if &@;
Run Code Online (Sandbox Code Playgroud)

输出:

Can't use an undefined value as a symbol reference at New_test.pl line 30.
Run Code Online (Sandbox Code Playgroud)

更新:没有警告线的相同输出,eval { close $fh };是第30行.

PSI*_*Alt 6

例外情况不在eval中,它在线下面,&@是错误的序列,你的意思$@

UPD:请注意,当你有严格的 on并且$ fh是undef 时,close会死掉,我认为这不是正常情况(算法错误).