私の兄弟は、何千ものアイテム ID と、次の方法で販売されたアイテムの数を持っています。
$VAR1 = {
'sold_times' => 4,
'item_id' => 1,
};
$VAR2 = {
'sold_times' => 1,
'item_id' => 2,
};
...
この情報は、ログの読み取りから得られます。Perl では、このデータは次のように定義されます。
my @items_ids_sold_count_map =
map( { sold_times => $item_id_sold_count_map{$_}, item_id => $_,}, @items_ids);
$item_id_sold_count_map はハッシュで、@items_ids はそのハッシュのキーです。参考までに、前に述べたように、ハッシュはログ ファイルの読み取りから取得されます。
open my $infile, "<", $file_location or die("$!: $file_location");
while (<$infile>) {
if (/item_id:(\d+)\s*,\s*sold/) {
$item_id_sold_count_map{$1}++;
}
}
close $infile;
ランキングで紹介したいと思います。基準は、降順の「sold_items」になります。たとえば、次のようなデータ構造で提示することが頭に浮かびます。
$VAR1 = { 'position' => 1, 'info' => { 'item_id' => 1, 'sold_items' => 4 },
'position' => 2, 'info' => { 'item_id' => 2, 'sold_items' => 1 }, ... };
このデータ構造を作成するにはどうすればよいですか? 「最良の」方法を正確に探しているわけではありませんが、約 500,000 の項目があります。