Perl入門ゼミ

テキスト処理、Linuxサーバー管理、Web開発ならPerl
  1. Perl
  2. 演算子
  3. here

ハッシュスライス

ハッシュスライスという機能を利用するとハッシュから複数の値を取り出すことができます。

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関数

Qiitaで
「3分間Perlテキストクッキング」
という連載を始めました。
テキスト処理を題材にして、3分くらいで読める分量で、書いていきます。
文字コード、テキストデータ、コンピュータにおけるテキストの扱いなど、ソフトウェアの基礎の話題も
3分間Perlテキストクッキング