如何在子例程中传递数组的哈希?

时间:2013-10-30 16:53:48

标签: arrays perl hash subroutine

我是perl的新手,我想问一下如何在子例程中传递数组的哈希值。更具体地说,我有一个数组哈希

my %records = (a => [ qw/ A B C / ], b => [ qw/ C D E A / ], c => [ qw/ A C E / ],);

我想申请

use Array::Utils qw(:all)
#unique union
my @unique = unique(array1, array2, ..., arrayX);

到散列中的所有数组。我正在尝试创建一个子程序,它将输入哈希并返回其中所有数组的唯一联合。任何帮助将不胜感激。

提前致谢, 萨诺斯

1 个答案:

答案 0 :(得分:4)

您必须传递其values(它们是数组引用)并取消引用它们(如下所示,在map函数内部,通过添加@符号):< / p>

use Array::Utils qw(:all);
my %records = (a => [ qw/ A B C / ], b => [ qw/ C D E A / ], c => [ qw/ A C E / ],);
my @unique = unique(map {@$_} values %records);
print join(' ',@unique); #will print "A B C D E"