はじめてのPerlでつまずくこと
Perlで、たとえば、以下のソースを他の言語経験がはじめて見た時に、たぶん、?だと思います。
- 同じ変数名($aaa)が使われている違いは、なんだろう?
- リストを囲っている()、{}、[]の違いは、なんだろう?
use strict; use warnings; my $aaa; my @aaa = (1, 2, 3, 4); my %aaa = (1 => '001', 2 => '002', 3 => '003', 4 => '004'); for ($aaa = 0; $aaa <= 3; $aaa++) { print $aaa{$aaa[$aaa]}, "\n"; } my @bbb = (1, 2, 3, 4); my %ccc = (1 => '001', 2 => '002', 3 => '003', 4 => '004'); for ($aaa = 0; $aaa <= 3; $aaa++) { print $ccc{$bbb[$aaa]}, "\n"; } my $bbb = [1, 2, 3, 4]; my $ccc = {1 => '001', 2 => '002', 3 => '003', 4 => '004'}; for ($aaa = 0; $aaa <= 3; $aaa++) { print $ccc->{$bbb->[$aaa]}, "\n"; }
上記を理解するには、下記の理解が必要です。
- 同じ変数名でも頭文字($,@,%)が違うと、全く別の変数になる。
- 配列変数やハッシュ変数の要素にアクセスするときは、インデックスを指定して同名のスカラー変数になる。
- 小カッコは、普通のリストやハッシュのリストを記述し、配列変数やハッシュ変数に各々の値が代入される。
- 中カッコは、ハッシュのリストを記述し、スカラー変数に代入すると、ハッシュのリファレンスが代入される。
- 大カッコは、普通のリストを記述し、スカラー変数に代入すると、配列のリファレンスが代入される。
尚、for文で使われている小カッコと中カッコは、今回説明対象外になっています。
本ブログの応援クリックも、よろしくお願いします。