変数宣言と同時にハッシュに代入する方法
スカラー変数の場合は変数宣言と同時に変数に値の代入もできました。
スカラー変数で変数宣言と同時に代入my $taro_name = '太郎'; my $taro_shincho = 1.6; my $taro_taiju = 60;ハッシュの場合、変数宣言と同時に代入もしたい場合は、以下のように書きます。
my %taro = ( name => '太郎', shincho => 1.6, taiju => 60, );形式は以下の通りです。
my %変数名 = ( キー1 => '文字列', キー2 => 数値, );代入する値は、数値ならクオート無し、文字列ならクオートします(※1)。「キー => 値」の後はカンマを付けて下さい。
※1 クオートについて詳しくは: 「Perl の文字出力方法」
ハッシュへの代入のタイミング
変数宣言と同時にハッシュに代入を行う場合でも、全てのキーを代入しなくても構いません。キーは後からいくらでも追加できます。例えば以下のように、taiju だけ別に代入してもOKです。
my %taro = ( name => '太郎', shincho => 1.6, #メートル ); $taro{taiju} = 60; #kg
いつ変数に値が代入されるか
ただし以下のように、代入した値を使った計算まで変数宣言と一緒に代入しようとしてもうまくいきません。代入は my で始まる記載がセミコロンで終わった時に初めて完了します。代入がうまくいかない書き方
my %taro = ( name => '太郎', shincho => 1.6, #メートル taiju => 60, #kg bmi => $taro{taiju} / ($taro{shincho} * $taro{shincho}), ); # ここで初めて代入が実行される
>次は:どんな時にハッシュを使うのか