Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl哈希数组,键返回错误_Perl - Fatal编程技术网

Perl哈希数组,键返回错误

Perl哈希数组,键返回错误,perl,Perl,我有一段代码,其中array是散列数组: my $hash = $array[0]; print "REF: " . ref($hash) . "\n"; my @names = keys ($hash); REF打印散列,所以我知道它是散列 但是keys函数返回一个错误: 键的arg 1的类型必须为哈希 如何使用$hash作为hash 谢谢 $hash不是散列,而是散列引用。因此,您需要先解除对它的引用,然后才能对其运行键 最简单的方法是: keys %$hash; e、 g 是的,我故

我有一段代码,其中array是散列数组:

my $hash = $array[0];
print "REF: " . ref($hash) . "\n";
my @names = keys ($hash);
REF打印散列,所以我知道它是散列

但是keys函数返回一个错误:

键的arg 1的类型必须为哈希

如何使用$hash作为hash


谢谢

$hash
不是散列,而是散列引用。因此,您需要先解除对它的引用,然后才能对其运行键

最简单的方法是:

keys %$hash; 
e、 g

是的,我故意混合了两种解引用方法。
->
符号表示“取消引用此项”-它通常用于面向对象的内容

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

见:


REF打印散列,因此您知道它是对散列的引用。
foreach my $key ( keys %$hash ) {
    print $key, " => ", $hash -> {$key},"\n"; 
}