Perl哈希值

3

我想打印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)
1个回答

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";
}

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比较哈希{key}元素和数组元素?实际上,我需要比较哈希键与数组元素,还需要比较哈希值与数组元素。例如:array[0] = 10,我需要比较10是否大于等于哈希键并且10是否小于等于哈希值。请问如何使用Data:Dumper进行此操作? - John Levin
@JohnLevin 你只能将Data::Dumper用于数据显示,其他任何用途都不行。 - TLP
(为了澄清)虽然 Data::Dumper 是一个可以序列化数据的工具,但它只生成代表数据的字符串,不能用于其他目的。 - zdim
@JohnLevin,我认为你的后续问题更适合作为第二个问题。请提供一个更大的示例,包括输入哈希数组引用、期望输出以及你尝试过的内容。 - Greg Nisbet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接