2009-09-16 70 views
11

我正在编写运行各种外部命令的代码以及可能会失败的各种文件系统命令。是否有任何Perl模块可以阻止我将“或死”添加到任何可能失败的东西?

是否有任何模块可以为我节省将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失败,它会告诉我,失败在system

回答

32

是的。查看CPAN的autodie

从文档:

autodie编译指示提供了一种方便的方法,以取代正常返回
假失败与抛上失败的异常等同的功能。

autodie pragma的词法作用域,这意味着与 autodie改变功能和子程序将仅改变他们的行为,直到封闭块,文件的末尾,或 eval

+11

并且从Perl 5.10.1开始,autodie包含在核心中。 http://perldoc.perl.org/perl5101delta.html#New-Modules-and-Pragmata – oylenshpeegul 2009-09-16 10:57:08

相关问题