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

如何遍历从哈希中取出的数组?为何输出数组引用而非元素?

问题原因及解决办法

你遇到的问题核心是Perl中数组引用的处理:

  • 哈希%h里的'b'对应的是一个数组引用(['x','y']创建的就是数组引用),用$h{'b'}取出的是这个引用本身,而不是数组里的元素。
  • 把这个引用赋值给数组@a时,@a里只会有一个元素——就是这个数组引用,所以遍历@a时,打印的是引用的字符串形式(ARRAY(0x...)是Perl对数组引用的默认输出)。

解决办法

方法1:解引用后赋值给数组

用@{ $h{'b'} }对数组引用解引用,把引用指向的数组元素全部赋值给@a:

my %h = (
  'z' => ['1', '2', '3'],
  'b' => ['x', 'y'],
);
my @a = @{ $h{'b'} };
foreach my $k (@a) {
  print "[$k]";
}

方法2:直接遍历数组引用

不需要额外赋值给@a,直接遍历解引用后的数组:

my %h = (
  'z' => ['1', '2', '3'],
  'b' => ['x', 'y'],
);
foreach my $k (@{ $h{'b'} }) {
  print "[$k]";
}

两种方法运行后都会输出预期的[x][y]。

内容的提问来源于stack exchange,提问作者yegor256

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 15:50:15