在Perl中“回复警告”是一种好习惯吗?

时间:2012-11-21 00:23:42

标签: perl

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

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

我可以安全地这样做吗?或者还有更好的方法吗?

2 个答案:

答案 0 :(得分:8)

这是非常安全的,但它需要查看source来确定返回的值(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;

答案 1 :(得分: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; }