为什么Perl的eval没有从Test :: Cmd :: Common-> unlink中捕获问题?

Fir*_*ras 5 perl eval

我有以下perl代码:

use strict;
use warnings;
use Test::Cmd::Common;

my $path = "/something/not/available";
my $test = Test::Cmd::Common->new(string => 'File system operations');

eval{
        $test->unlink("$path");
};
ok(!$@, "file unlike");

print "done.\n";
Run Code Online (Sandbox Code Playgroud)

$ test-> unlink()行将失败并抛出异常.但问题是:eval没有处理该异常并且代码执行正在被中断.

输出 :

$ perl test.pl 
could not unlink files (/something/not/available): No such file or directory
NO RESULT for test at line 561 of /home/y/lib/perl5/site_perl/5.8/Test/Cmd/Common.pm (Test::Cmd::Common::unlink)
    from line 9 of test.pl.
Run Code Online (Sandbox Code Playgroud)

eval在这里做得对吗?或者我误解了什么?

F.

Ale*_*nii 11

从Test :: Cmd :: Common的文档:"删除指定的文件.如果由于任何原因无法删除任何文件,则退出无结果.".通过查看源代码,Test :: Cmd :: Common调用Test :: Cmd-> no_result,确实如此

exit (2);
Run Code Online (Sandbox Code Playgroud)

"退出"不能被eval困住,所以它是预期的行为.