9.2 KiB
9.2 KiB
title | author | date | url | wordtwit_post_info | categories | ||
---|---|---|---|---|---|---|---|
ハッシュの扱い方について | kazu634 | 2009-03-08 | /2009/03/08/_1206/ |
|
|
Perlでスクリプトを書いていてはまったので、とりあえず備忘録としてまとめておきます。
ハッシュリファレンス
my %month = ( January => 1, Feburary => 2, March => 3, April => 4, May => 5, June => 6, July => 7, August => 8, September => 9, October => 10, November => 11, December => 12, ); # ハッシュリファレンスを$ref_hashに格納 my $ref_hash = \%month; print("reference to month: $ref_hash\n"); # デリファレンスするには%$ref_hashのように表記する my @sorted_key = sort keys %$ref_hash; print("Sorted key: @sorted_key\n");
ハッシュリファレンスからのハッシュの要素にアクセスするには次のような方法がある:
- $$ref_hash{January} - $ref_hash->{January}
無名ハッシュ
無名ハッシュは「{}」で指定してあげる:
my $ref_hash = { January => 1, Feburary => 2, March => 3, April => 4, May => 5, June => 6, July => 7, August => 8, September => 9, October => 10, November => 11, December => 12, };
2次元ハッシュ
こんな感じで書くといい:
while (<DATA>) { chomp; if (/^\[(.*)\]$/) { $tmp_key = $1; } elsif (/^(.*): (.*)$/) { $data{$tmp_key}{$1} = $2; } } # print Dumper(%data); } __DATA__ [total_income] income: 227706 extra_income: 15000 [fixed_pay] cell_phone1: 2213 cell_phone2: 9750 meals: 13230 scholarship: 9000 provider: 4095 [commute] commute: 39890 [daily_pay] 2/01: 7130 2/02: 1044 2/03: 1710 2/04: 9360 2/05: 6810 2/06: 1405 2/07: 7608 2/08: 670 2/09: 1374 2/10: 3059 2/11: 5205 2/12: 1470 2/13: 750 2/14: 407 2/15: 2774 2/16: 2510 2/17: 1320 2/18: 1740 2/19: 6910 2/20: 2837 2/21: 7620 2/22: 6277 2/23: 1730 2/24: 2624 2/25: 4347 2/26: 1299 2/27: 987 2/28: 4900