ハッシュスライスを使うと、ハッシュから複数の値を一気に取得したり、一気に代入したりすることができて便利。
取得の場合の例:
例: demo1.pl
#!/bin/bash
my %data = ('hoge' => 'fuga', 'foo' => 'bar', 'piyo' => 'piyopiyo');
my @values = @data{'hoge', 'foo', 'piyo'};
# 確認用
foreach my $value (@values) {
print($value."\n");
}
出力: demo1.pl
fuga
bar
piyopiyo
このプログラム[demo1.pl]では、%dataのキーが[hoge, foo, piyo]に対応する要素の値をそれぞれ順番に取り出して@valuesへ代入している
@data{}の部分は以下のように、直接指定ではなくて配列にキーの一覧を用意しておいて利用することも可能。
例: demo2.pl
#!/bin/bash
my %data = ('hoge' => 'fuga', 'foo' => 'bar', 'piyo' => 'piyopiyo');
my @keys = ('hoge', 'foo', 'piyo');
my @values = @data{@keys};
# 確認用
foreach my $value (@values) {
print($value."\n");
}
出力: demo2.pl
fuga
bar
piyopiyo
代入の場合の例:
例: demo3.pl
#!/bin/bash
my @keys = ('hoge', 'foo', 'piyo');
my @values = ('fuga', 'bar', 'piyopiyo');
my %data = ();
@data{@keys} = @values;
# 確認用
foreach my $key (keys(%data)) {
print($key.' = '.$data{$key}."\n");
}
出力: demo3.pl
foo = bar
piyo = piyopiyo
hoge = fuga
@data{}の部分は取得の場合の例と同様に、以下のように直接指定ではなくて配列にキーの一覧を用意しておいて利用することも可能。
例: demo4.pl
#!/bin/bash
my %data = ('hoge' => 'fuga', 'foo' => 'bar', 'piyo' => 'piyopiyo');
my @keys = ('hoge', 'foo', 'piyo');
my @values = @data{@keys};
# 確認用
foreach my $value (@values) {
print($value."\n");
}
出力: demo4.pl
foo = bar
piyo = piyopiyo
hoge = fuga