如何使用值为数组的标量键创建和访问Perl哈希?

Par*_*ius 1 arrays perl reference

在Perl 5.10中,如何使用值为数组的标量键创建和访问哈希?

#Doing this does not work properly.
%someHash= ("0xfff" => ('Blue', 'Red', 'Yellow'));
@arr = @fileContents{"0xfff"};
print @arr;
Run Code Online (Sandbox Code Playgroud)

当我打印数组时,唯一打印的是"ARRAY('randmemAddr')".当我在@arr上执行foreach循环时,只打印第一个元素.然后我得出结论,我没有正确地将数组存储在哈希中.

Tel*_*hus 12

我的原始答案发布了工作代码,但并没有真正解释你的问题.这有点扩展以纠正这一点.你的例子有两个问题.首先,您在制作参考时遇到了问题.您需要使用[ ]而不是标准括号来创建引用(到匿名数组).其次,当你试图获得参考时,你就离开了一组括号.你想把引用本身放在里面@{ },以获得整个数组.(同样,这可能是一个错字:你有没有$之前filecontents).

这里的代码基本上来自perldoc perldsc.我强烈推荐它.如果您不熟悉Perl中的引用,也非常有用perldoc perlreftut.这两个教程都讨论了如何在各种情况下制作和获取参考文献.最后,您可以在PerlMonks的帖子中找到一个好的备忘单供参考.

#!/usr/bin/env perl
use strict;
use warnings;


my %HoA = (
    flinstones      => [ qw/fred barney/ ],
    jetsons         => [ qw/george jane elroy/ ],
);

for my $family (keys %HoA) {
    print "Members of the \u$family:\n";
    print "\t @{ $HoA{$family} }\n";
}
Run Code Online (Sandbox Code Playgroud)