perl - 为什么我的子程序返回值没有分配给 $_ 默认变量

标签 perl

我有一个更新 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/

相关文章:

css - 如何在 Gtk3 可选标签中设置光标颜色?

perl - ExtUtils::MakeMaker:如何为测试和/或安装指定二进制可执行文件先决条件?

perl - 模板工具包字符编码

Perl、ppm 和尝试下载模块依赖项

performance - 如何使用 Perl 修剪日志文件?

perl - 当我打印 Perl 哈希时,是什么决定了键的顺序?

regex - 仅当模式存在时才匹配模式

perl - printf "Modification of a read-only value attempted"错误

perl - 如何在不发生冲突的情况下对文件进行并行写访问?

arrays - Perl Dancer - JSON 序列化器和 JSON 数组