ハッシュスライス
ハッシュスライスという機能を利用するとハッシュから複数の値を取り出すことができます。
my @math_score_slice = @math_scores{'Aiko', 'Kenta'};
ハッシュスライスを使うと、キーを複数指定して、値をリストとして取り出すことができる。接頭辞が$や%でなく、@であること、キー指定が、{ }であることに注意してください。
ハッシュのリファレンスに対して、ハッシュスライスを行うときは次のようにできます。
my @math_score_slice = @$math_scores{'Aiko', 'Kenta'};
ハッシュスライスを左辺値として使う
@math_score_of{'Aiko', 'Kenta'} = (20, 40);
ハッシュスライスを左辺値として使うことで、対応するキーに代入することができます。
配列スライス
ハッシュスライスとよく似た機能として配列スライスがあります。配列スライスは、配列の複数の要素を取り出すのに利用することができます。
# 配列スライス my @values = @array[0, 3, 5];
サンプルプログラム
ハッシュスライスのサンプルプログラムです。
use strict; use warnings; use Data::Dumper; # 生徒の数学の点数 my %math_scores = ( Aiko => 89, Kenta => 100, Taro => 34, ); print "元のハッシュ\n"; print Dumper \%math_scores; print "\n\n"; # 1: ハッシュスライス print "1: ハッシュスライス(Aiko と Kenta の値を取得する)\n"; my @math_score_slice = @math_scores{'Aiko', 'Kenta'}; print "\@math_score_slice = (", join(', ', @math_score_slice), ")\n\n"; # 2: ハッシュスライスを左辺値として使う( Aiko と Kenta に値を設定する ) print "2: ハッシュスライスを左辺値として使う" . "(Aiko と Kenta に値を設定する)\n"; @math_scores{'Aiko', 'Kenta'} = (20, 40); print Dumper \%math_scores;
参考:join関数