我试图打印 perl 哈希值,但它打印的是 ARRAY()。
foreach my $key (sort keys %myHash) {
my $val = $myHash{$key};
print "$key => $val\n";
}
Run Code Online (Sandbox Code Playgroud)
输出正在打印
172 ARRAY(0x1c42548)
199 ARRAY(0x1c42638)
209 ARRAY(0x1c63360)
299 ARRAY(0x1c63390)
325 ARRAY(0x1c634e0)
Run Code Online (Sandbox Code Playgroud)
散列中的值本身就是指向数组的标量。考虑使用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";
}
Run Code Online (Sandbox Code Playgroud)
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);
Run Code Online (Sandbox Code Playgroud)
哪个打印
$VAR1 = {
'1' => 2,
'3' => 4
};
Run Code Online (Sandbox Code Playgroud)