から構築%grouped
しています%uniq_c
。ここ%grouped
には、分割によって生成されたキーと値のペアが含まれています%uniq_c
のキー IF%uniq_c
の値は十分に高いです。それはかなり効率的ですが、私はもっとうまくやりたいです。
%uniq_c = (
'foo:baz' => 3,
'foo:quux' => 12,
'bar:corge' => 15,
'bar:fred' => 8,
);
foreach my $gv (keys %uniq_c) {
if( $uniq_c{$gv} >= 10 ) {
my ($g, $v) = split /:/, $gv, 2;
push( @{$grouped{$g}}, $v );
}
}
ループの反復ごとに 3 つの文字列のコピーが発生していると思います。$g の場合は 1、$v の場合は 2。$v のコピーの 1 つを削除する方法はありますか、それとも $v と $g のコピー (おそらく何らかの文字列スライス) を削除する方法はありますか?
参考までに、Data::Dump::dump(%grouped) は以下を生成します。
(
"bar", ["corge"],
"foo", ["quux"],
)