是否有任何Perl模块可以阻止我添加"或死"到任何可能失败的东西?

Nat*_*man 11 error-handling perl perl-module

我正在编写运行各种外部命令的代码以及可能失败的各种文件系统命令.

是否有任何模块可以省去添加or die任何可能失败的东西的麻烦?

我希望能够将以下内容包装成以下内容,而不是:

mkdir $dirname or die "can't create directory $dirname";

system("some external command") or die "can run some external command";
Run Code Online (Sandbox Code Playgroud)

我明白了:

some_wrapper_code {
    mkdir $dirname;

    system("some external command");
}
Run Code Online (Sandbox Code Playgroud)

如果mkdir失败,它会告诉我故障已经发生mkdir,如果system失败,它会告诉我故障已经发生system.

fri*_*edo 32

是的.autodie从CPAN 退房.

来自文档:

autodiepragma提供了一种方便的方法来替换通常
在失败时返回false的函数以及在失败时抛出异常的等价函数.

autodie编译指示具有词法范围,这意味着更改的函数和子例程 autodie将仅更改其行为,直到封闭块,文件或 eval.

  • 从Perl 5.10.1开始,autodie包含在核心中.http://perldoc.perl.org/perl5101delta.html#New-Modules-and-Pragmata (11认同)