【发布时间】:2014-10-18 15:00:10
【问题描述】:
看来我的代码无法遍历存储在哈希中的数组。
我错过了什么?
#!/usr/bin/env perl
use Data::Dumper;
my $data = {array => ['a', 'b', 'c']};
my @array = $data->{array};
print Dumper(@array); # It looks like $data->{array} is an array
print "Ref: ".ref($data->{array})."\n"; # And this array is indeed an array
foreach ($data->{array}) { print "$_\n"; } # But this doesn't work
foreach (@array) { print "$_\n"; } # Neither this one
# But with a regular array it works...
my @myNames = ('Larry', 'Curly', 'Moe');
foreach (@myNames) { print "$_\n"; }
我的输出:
$VAR1 = [
'a',
'b',
'c'
];
$VAR1 = 'a';
Ref: ARRAY
ARRAY(0x8002bcf8)
ARRAY(0x8002bcf8)
Larry
Curly
Moe
我对 REF/SCALAR 类型感到很困惑。有时 Perl 将值作为引用,有时则不。在这种情况下,因为我从 ref 函数中得到了 'ARRAY',我猜 $->{array} 并没有给我一个数组,而是一个对数组的引用。
我也尝试过@$data->{array},但没有成功。
【问题讨论】: