最初に、このような質問をされたことをお詫び申し上げます。ハッシュ参照の配列を数える方法を見つけなければ、答えを探すのは難しい
私の関数は、電子メール アドレスを含むハッシュ参照の配列である DBI クエリからの出力を受け取ります。タスクは、ドメイン名ごとに電子メール アドレスの毎日の数を保持することです。私がしているのは、カウントするドメインのハッシュを構築することです。ポイントは、アレイが少なくとも 10,000,000 通の電子メールを格納することが期待されていることです。スクリプトの実行には数分かかりました。
問題は、アルゴリズムを単純化する方法を思いつくことができるかということです。
my ($data) = shift;
my %elements = ( );
foreach my $row (@$data)
{
my ($username, $domain) = split(/@/, $row->{addr});
if (exists($elements{$domain}))
{
$elements{$domain}++;
}
else
{
$elements{$domain} = 1;
}
}
ところで、私の英語は申し訳ありませんが、私はネイティブ スピーカーではありません。ありがとう。