5

我想检查一个条件,打印一个警告,然后用一行代码从一个子程序返回。这有效(我认为警告返回 1):

return warn "can't find file" if not -f $input_file;

我可以安全地做到这一点吗?或者有更好的方法吗?

4

2 回答 2

9

这是非常安全的,但它需要查看以确定返回的值(true),并且它没有留下可读的选项来控制返回的值。这非常重要,因为在这种情况下您通常不希望返回任何内容/undef/false,但您当前正在返回 true。

以下所有选项都允许您指定返回的值:

warn("can't find file"), return if !-f $input_file;

(warn "can't find file"), return if !-f $input_file;

if (!-f $input_file) { warn "can't find file"; return }

-f $input_file or warn("can't find file"), return;

-f $input_file or (warn "can't find file"), return;
于 2012-11-21T00:38:23.330 回答
0
return 0 * warn "can't find file" if not -f $input_file;

将返回 0,因此任何调用子程序的程序都会知道它失败了。

这将是我的懒惰版本

if (!-f $input_file) { warn "can't find file"; return 0; }
于 2019-06-09T10:24:02.690 回答