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

时间:2009-09-16 10:39:42

标签: perl error-handling perl-module

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

是否有任何模块可以省去将or die添加到可能失败的任何内容的麻烦?

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

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

system("some external command") or die "can run some external command";

我明白了:

some_wrapper_code {
    mkdir $dirname;

    system("some external command");
}

如果mkdir失败,它会告诉我失败在mkdir,如果system失败,它会告诉我失败在{{1} }。

1 个答案:

答案 0 :(得分:32)

是的。从CPAN中查看autodie

来自文档:

  

autodie pragma提供了一种方便的方法来替换通常返回的函数   失败时返回false,等同于失败时抛出异常。

     

autodie pragma具有词法范围,这意味着函数和子例程已更改为   autodie只会在封闭的块,文件或结尾之前更改其行为   eval