You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

fetchrow_hashref是否会将返回值存入可直接访问的默认变量?

问题解答

Perl DBI 中的fetchrow_hashref方法不会自动将返回值存入默认变量$_。只有Perl内置的部分语法结构(比如while (<STDIN>)、默认的map/grep遍历等)才会默认操作$_,第三方模块的方法普遍没有做这类隐式赋值的设计。

你遇到$_未定义的原因就是while ($sth->fetchrow_hashref())仅会判断方法返回值的真假,不会把返回值自动赋值给$_。

修复方案

你可以选择两种写法修正:

  • 显式给$_赋值,保留你的单行写法:
$test->{ $_->{N} } = 1 while $_ = $sth->fetchrow_hashref();
  • 更推荐的可读性更好的写法,单独声明行变量:
while (my $row = $sth->fetchrow_hashref()) {
    $test->{ $row->{N} } = 1;
}

内容的提问来源于stack exchange,提问作者Milton Earnest Zilmer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 14:57:04