我尝试以树的形式打印哈希键和值。我的 perl 代码如下。

use strict ;
use warnings ;
my %hash = (
    first => {
            a => "one",
            b => "two",
            c => "three",
    },
    second => {
            d => "four",
            e => "five",
            f => "six",
    },
    third => "word",
);

foreach my $line (keys %hash) {
    print "$line: \n";
    foreach my $elem (keys %{$hash{$line}}) {
        print "  $elem: " . $hash{$line}->{$elem} . "\n";
    }
}

输出错误信息:
第二:
d:四个
六:六
乙:五个
第三:
不能在 C:\Users\Dell\Music\PerlPrac\pracHash\hshofhsh_net.pl 第 19 行使用“strict refs”时将字符串(“word”)用作 HASH 引用。

在这里,在第三个键值下不打印。我该怎么做?

最佳答案

您不能取消引用字符串( $hash{third} ,即 word )。您可以使用 ref 测试特定标量是否为引用:

for my $line (keys %hash) {
    print "$line: \n";
    if ('HASH' eq ref $hash{$line}) {
        for my $elem (keys %{ $hash{$line} }) {
            print "  $elem: $hash{$line}{$elem}\n";
        }
    } else {
        print "  $hash{$line}\n";
    }
}

关于perl - 尝试在 perl 中打印混合哈希元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34560660/

10-15 09:09