11

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

有没有什么模块可以帮我省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失败它会告诉我失败是 in mkdir,如果system失败它会告诉我失败是 in system

4

1 回答 1

32

是的。autodie从 CPAN结帐。

从文档:

pragma 提供了一种方便的autodie方法,可以将通常在失败时返回
false 的函数替换为在失败时抛出异常的等效函数。

autodiepragma 具有词法范围,这意味着用 改变的函数和子例程 autodie只会改变它们的行为,直到封闭块、文件或 eval.

于 2009-09-16T10:41:04.453 回答