Perl 哈希值

Joh*_*vin 3 perl perl5.16

我试图打印 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)

Gre*_*bet 5

散列中的值本身就是指向数组的标量。考虑使用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)