我有一个更新 RSS 提要的 Perl 子程序。我想测试返回值,但是这个函数用在很多地方所以我只想测试默认变量$_
如果没有指定变量,据我所知应该是分配的返回值。
代码有点长,无法包含所有内容,但本质上它执行以下操作
sub updateFeed {
#....
if($error) {
return 0;
}
return 1;
}
为什么呢
$rtn = updateFeed("My message");
if ($rtn < 1) { &Log("updateFeed Failed with error $rtn"); }
不记录任何错误
然而
updateFeed("myMessage");
if ($_ < 1) { &Log("updateFeed Failed with error $_"); }
记录错误“
updateFeed Failed with error
”? (注意消息末尾没有值。)谁能告诉我为什么默认变量似乎包含一个空字符串或 undef?
最佳答案
因为 Perl 不是那样工作的。 $_
不会自动获取在 void 上下文中调用的函数的结果。有一些内置的读写操作符$_
和 @_
默认情况下,但您自己的子程序只有在您编写代码来实现它时才会这样做。
关于perl - 为什么我的子程序返回值没有分配给 $_ 默认变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14492395/