Tihiroの頭を休めるIT教室

少しだけ頭使って後は根性

Perlでハッシュに配列を保存したいとき

概要

Perlでハッシュに配列を保存したいときのソースコード例。 要するにキーごとに配列を用意して、それをハッシュに詰め込んでいきますよっていうお話。

環境

実例

use strict;
use warnings;

my @keys = ('A', 'B', 'B', 'D', 'E', 'A');
my @vals = ('1', '2', '3', '4', '5', '10');

my %hash;

for(my $i = 0; $i < scalar(@keys); $i++) {
    my $key = $keys[$i];
    my $val = $vals[$i];
    
    if (!defined($hash{$key})) {
        my @blankArray = ();
        $hash{$key} = \@blankArray;
    }
# my @bufArray = @{$hash{$key}} ってすると、別のアドレスが確保されてしまうのでNG
    push(@{$hash{$key}}, $val);
}

foreach my $key (keys(%hash)) {
    print @{$hash{$key}}."¥n"; 
}

print 'Yeah!!';

まとめ

すぐ忘れちゃうんで自分用メモ。