今日は Perl の変数の形の一つである「ハッシュ」の使い方を覚えましょう。

「変数」とは?

Perl の変数

変数は整理ボックスのようなものです

プログラムには、行った作業の結果を出力する前に、途中経過などを保存しておくための「変数」というものがあります。「変数」は名前を付けた整理ボックスのようなものです。


 

Perl のスカラー変数

Perl の変数の一つとしては「$hensumei」という形式がありましたね。
これは例えば、以下のように計算する数値や計算結果を保存するために使います。
my $taro_name = '太郎';
my $taro_shincho = 1.6; #メートル
my $taro_taiju = 60; #kg
my $taro_bmi = $taro_taiju / ($taro_shincho * $taro_shincho);
print "${taro_name}の BMI は $taro_bmi です。
";
ここでは、太郎さんの名前($taro_name)と身長($taro_shincho)、体重($taro_taiju)を保存し、また、BMI を計算した結果も出力前に一時保存しています($taro_bmi)。

このように、一つの変数名につき一つの値を保存できる変数を「スカラー変数」と呼び、Perl では「$」を使って、この変数がスカラー変数である事を示します。

Perl のハッシュ

Perl のハッシュ

ハッシュは引き出し付の整理ボックス

今日覚える「ハッシュ」は、複数のスカラー変数をグループにまとめたものです。名前のついた棚に、複数の引き出しが付いているようなものだと思って下さい。引き出しにも、それぞれ中に何が入っているかを表すラベルを付ける事ができます。

変数が「ハッシュ」である事を表す記号は「%」です。例えば、上のプログラムは、ハッシュを使うと以下のように書き換える事ができます。

 

my %taro;
$taro{name} = '太郎'; 
$taro{shincho} = 1.6; #メートル
$taro{taiju} = 60; #kg 
$taro{bmi} = $taro{taiju} / ($taro{shincho} * $taro{shincho});
print "$taro{name}の BMI は $taro{bmi} です。
";

変数宣言が1カ所に減っていて、「name」や「shincho」など、先ほどは変数名の一部にしていた部分が { と } に囲まれていますね。

ハッシュの形式は、以下の通りです。
  • 変数宣言する時は変数名に「%」を付ける
  • 代入や参照(変数の値を使う事)の時は $変数名{キー名} と書く
「変数名」の部分は上の図で棚全体に付けた名前、この場合は「taro」です。「キー名」が引き出しに付けたラベルの方で、プログラム内では「name」、「shincho」、「taiju」などです。この「キー」と言うのは Perl の用語で、「ハッシュキー(hash key)」と呼びます。

>次は:変数宣言と同時にハッシュに代入する方法