Memoize |
BasicWerk
EC Support
Technique
Facebook
|
20141226012754_Perl_hash_reference |
Perl_hash_reference
無名ハッシュリファレンス。 % reply # コードブロックではないことをコンパイラに対して伝えるためには # +{ } の形で書く 4> my $hash_ref = +{}; $res[3] = {} # ちなみにコードブロックであることを明示するときは {; } # ハッシュリファレンスに key と value を登録 6> $hash_ref->{'aaa'} = 1; $res[4] = 1 7> $hash_ref $res[5] = { 'aaa' => 1 } # ハッシュリファレンスをハッシュとして参照 8> keys %{$hash_ref}; $res[6] = 'aaa'
だから例えば次のようなデータ構造は Members John age 34 part guitar Ian age 35 part vocal Reni age 33 part drums Mani age 35 part bass こんな風に書ける sample_hash_ref.pl #! /usr/bin/perl use warnings; use strict; my @members = ( +{ '1_name' => 'John', '2_age' => 34, '3_part' => 'guitar', }, +{ '1_name' => 'Ian', '2_age' => 35, '3_part' => 'vocal', }, +{ '1_name' => 'Reni', '2_age' => 33, '3_part' => 'drums', }, +{ '1_name' => 'Mani', '2_age' => 35, '3_part' => 'bass', }, ); # 文字列ファイルハンドル open my $out, ">", \ my $string; print $out "Members\n"; foreach my $member (@members) { foreach my $att (sort keys %{$member}){ my $val = $member->{$att}; print $out "\t$att\t$val\n"; } } close $out; $string =~ s/1_name\t//g; $string =~ s/(?:2|3)_/\t/g; print $string;
実行してみる % chmod a+x sample_hash_ref.pl % sample_hash_ref.pl Members John age 34 part guitar Ian age 35 part vocal Reni age 33 part drums Mani age 35 part bass
|
© Shin Nakamura/BasicWerk 2008 - 2014 |