如果有任何更改,需要进行以下Perl eval子弹证明?

nsl*_*mnx 4 perl exception-handling

eval {
    # here is put some code that may throw exception
    return 1;
} or do {
   my $error = $@;
   # Handle error.
};
Run Code Online (Sandbox Code Playgroud)
  1. 以下样式是否可以防止$ @未正确设置?
  2. 以下"1"是什么 防范?
  3. 是"或做{"比说"if($ @){"更好吗?如果是这样,为什么?

Dav*_*man 9

请参阅尝试::微小的的事情的讨论文件,可以使用时出问题evaltry型声明中,他们如何能够避免,为什么你贴的代码以1(为保证eval,如果它成功完成块返回真值).

阅读之后,考虑使用Try :: Tiny而不是经历所有的旋转,确保你eval的每一个都能正常运行try.毕竟,懒惰是程序员的第一个伟大的美德.