我正在编写一段代码来创建一个 HoA 并为每个键循环。下面的片段显示了我遇到的问题的一个基本示例。
#!/usr/bin/perl
use strict;
use warnings;
my @array1 = qw (1 1 3 4 5); # Note that '1' appears twice
my @array2 = qw (a b c d e);
my @array3 = qw (6 7 8 9 10);
my @array4 = qw (f g h i j);
my %hash;
push @{$hash{$array1[$_]}}, [ $array2[$_], $array3[$_], $array4[$_] ] for 0 .. $#array1;
for my $key (sort keys %hash) {
my ($array2, $array3, $array4) = @{$hash{$key}[-1]};
print "[$key] $array2\t$array3\t$array4\n";
}
输出:
[1] b 7 g
[3] c 8 h
[4] d 9 i
[5] e 10 j
对于我实际使用的数据(与此示例相反),我一直在使用我刚刚意识到不是唯一的键,因此,如上所述,我最终覆盖了非唯一键。我主要使用这些值作为键,以便稍后按它们排序。
我的问题是:
A)我可以为每个键执行上述任务,unless (exists $hash{$array1})
在这种情况下我可以修改它
或者
B)有没有办法按这些值排序,在这种情况下我可以使用另一个非冗余键。
谢谢!