我想打印Perl哈希值,但它打印出了ARRAY()。
foreach my $key (sort keys %myHash) {
my $val = $myHash{$key};
print "$key => $val\n";
}
输出的打印结果如下:
172 ARRAY(0x1c42548)
199 ARRAY(0x1c42638)
209 ARRAY(0x1c63360)
299 ARRAY(0x1c63390)
325 ARRAY(0x1c634e0)
你的哈希表中的值本身是指向数组的标量。考虑使用Data::Dumper
打印该值,或者如果数组元素是标量,可以尝试如下方式。
Perl内置的两个集合:哈希表和数组,不能直接嵌套。它们包含标量,可以是字符串/数字,也可以是指向哈希表或数组的引用。还可以有对函数和其他更奇特的东西的引用。
# Extract the array as an array and interpolate.
foreach my $key (sort keys %myHash) {
my @val = @{ $myHash{$key} };
print "$key => @val\n";
}
Data::Dumper
提供了一个选项来对键进行排序。
# sample program using Data::Dumper
use strict;
use warnings;
use Data::Dumper;
local $Data::Dumper::Sortkeys = 1;
# obj is a reference to a hash.
my $obj = { 1 => 2, 3 => 4};
print Dumper($obj);
打印输出
$VAR1 = {
'1' => 2,
'3' => 4
};
Data::Dumper
用于数据显示,其他任何用途都不行。 - TLPData::Dumper
是一个可以序列化数据的工具,但它只生成代表数据的字符串,不能用于其他目的。 - zdim