perl中的异常处理

pra*_*kvs 4 perl perl-module

我已经看到在eval块的末尾出现1,用于perl中的异常处理.为什么需要这个?如果eval块返回false会发生什么?

即使我们不直接使用$ @但是CPAN的一些库要进行异常处理,这是否需要?

ike*_*ami 6

如果eval块返回false会发生什么?

该错误值由返回eval.

为什么需要这个?

这不是必需的.

my $foo = eval { foo() };
Run Code Online (Sandbox Code Playgroud)

如果你$foo在异常时没有成功,那就完全没问题.

你看到的是什么

if (!eval { foo(); 1 }) {
   ...
}
Run Code Online (Sandbox Code Playgroud)

代码返回true以让if知道eval成功.eval将在异常时返回false.