例如,如果我有这个数组:
array={"a","b","c","d","a","d","b","d","z"}
我想将它拆分为Perl涉及相同元素的数组。
输出应该是这样的:
array1={"a","a"}
array2={"b","b"}
array3={"c"}
array4={"d","d","d"}
array5={"z"}
答案 0 :(得分:3)
my @grouped;
my %indexes;
push @{ $grouped[ $indexes{$_} //= @grouped ] }, $_
for @array;
但为什么你需要这样的结构呢?在我看来,你需要的只是数量。
my %counts;
++$counts{$_} for @array;
如果需要,您可以稍后重新创建项目。
my @grouped;
push @grouped, [ ($_) x $counts{$_} ]
for keys %counts;