=head1 NAME Enjoy! Perl Programming - No.32 =head1 SYNOPSIS ハッシュ変数 - ハッシュスライス @hash{'key3', 'key2', 'key1'} =head1 DESCRIPTION ハッシュは取出し時に順番は保証されない。指定した通りの順番で データを取出すにはどうしたら良いか。 =head2 順番通りに取出す ハッシュスライスを使う。 %hash = ('key1' => 'val1', 'key2' => 'val2', 'key3' => 'val3'); @ary = @hash{'key3','key1','key2'}; # ハッシュスライス print "@ary\n"; # val3 val1 val2 ハッシュスライスは指定したキーの順番通りに値のリストを取得できる。 リストを返す為先頭の記号が "@" であることに注意する。 =head2 キーをソートして取出す "sort" 関数を使うことで、キーをソートして取出すことが出来る。 %item = ( 'apple' => 100, 'orange' => 120, 'grape' => 300, 'carrot' => 80, 'tomato' => 50, 'potato' => 30, ); foreach ( sort keys %item ) { print "$_ = $item{$_}YEN\n"; } キーの逆順に取出すにはソートブロックを使えば良い。 foreach ( sort {$b cmp $a} keys %item ) { print "$_ = $item{$_}YEN\n"; } 値の順番で取出すには次のようにする。 foreach ( sort {$item{$a} <=> $item{$b}} keys %item ) { print "$_ = $item{$_}YEN\n"; } =head1 SEE ALSO "sort","keys" 関数のドキュメントページ。 "perldata","perlfaq4" ドキュメントページ。 =head1 TESTED OS : Windows 2000 Perl: ActivePerl v5.6.1 build 631 =head1 AUTHOR Name:吉田和弘(YOSHIDA Kazuhiro) Email:y-kazu@lares.dti.ne.jp Homepage:http://www.lares.dti.ne.jp/~y-kazu/perl/