【问题标题】:Perl array of hashes, keys return an errorPerl 哈希数组,键返回错误
【发布时间】:2015-03-03 11:13:10
【问题描述】:

我有这个代码,其中数组是一个哈希数组:

my $hash = $array[0];
print "REF: " . ref($hash) . "\n";
my @names = keys ($hash);

REF 打印 HASH,所以我知道它是一个哈希。

然后keys函数返回错误:

key 的 arg 1 类型必须是 hash

如何将 $hash 用作哈希?

谢谢!

【问题讨论】:

  • REF 打印 HASH,因此您知道它是对哈希的引用

标签: perl


【解决方案1】:

$hash 不是哈希,而是哈希引用。因此,您需要先取消对它的引用,然后才能在其上运行密钥。

最简单的方法:

keys %$hash; 

例如

foreach my $key ( keys %$hash ) {
    print $key, " => ", $hash -> {$key},"\n"; 
}

是的,我故意混合了两种取消引用方法。 -> 表示法表示“取消引用 this”——它通常用于面向对象的东西。

对于更复杂的取消引用 %$hash{'key'} 是不明确的,因此您开始需要括号 - 例如 %{$hash{'key'}}

见:

http://perldoc.perl.org/perlreftut.html

http://perldoc.perl.org/perlref.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-22
    • 1970-01-01
    • 2011-12-29
    • 1970-01-01
    • 1970-01-01
    • 2017-02-24
    相关资源
    最近更新 更多