我想检查一个条件,打印一个警告,然后用一行代码从一个子程序返回。这有效(我认为警告返回 1):
return warn "can't find file" if not -f $input_file;
我可以安全地做到这一点吗?或者有更好的方法吗?
我想检查一个条件,打印一个警告,然后用一行代码从一个子程序返回。这有效(我认为警告返回 1):
return warn "can't find file" if not -f $input_file;
我可以安全地做到这一点吗?或者有更好的方法吗?
这是非常安全的,但它需要查看源以确定返回的值(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;
return 0 * warn "can't find file" if not -f $input_file;
将返回 0,因此任何调用子程序的程序都会知道它失败了。
这将是我的懒惰版本
if (!-f $input_file) { warn "can't find file"; return 0; }