これが変数であると認識する:
$ -> スカラ変数
@ -> 配列変数
% -> 連想配列 (ハッシュ, Hash)
& -> サブルーチン
それぞれ独特のネームスペースよ呼ばれるものを持っているので, スカラ, 配列, 連想配列で同じ名前を使っても, 名前の衝突を心配する必要はない.
スカラ変数は, 数値, 文字列値, リファレンスなどの様々な値を一つ だけ保持することができる.
プレフィクス ($) が付き, 変数の値は数値, 文字列値の区別なく, 必要 に応じて自動的に変換される. 例えば文字列に数値を代入すれば数値 変数としても振る舞うことが可能である. 代入もされていない状態の 変数は数値として扱われると [0] として扱われ, 文字として扱われると [“” 空白文字] として扱われる:
$a = 10; # 数値を代入
$b = "20"; # 文字列を代入
$c = $a + $b; # 数値と文字列を加算
print $c; # 30 を出力
配列とは 複数のスカラ値の集合を表す. プレフィクス “@” が付き, 個個のスカラ値へアクセスするには “0” から始まる添字を指定する この時の添字指定は “[]” を用い, 個個の要素指定はプレフィクス “$”
で行う:
# 配列の初期化 @week = ('sum', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'); # 要素への参照 "mon" が表示される print $week[1];
ここでプレフィクスが二つ出てきているのに気がついたと思う. 最初 の配列の初期化は配列全部に対するおとなのでプレフィクス “@” を使 用する. 配列一つ一つの要素はスカラ変数となり, スカラへのアクセス なのでプレフィクス “$” を使用する.
ハッシュを簡単に表現すると, 配列変数の添字がキーと呼ばれる文字列 となったものになる. データはキーと対応して保持される. プレフィクス “%” がつき, 個個のスカラ値へアクセスするには変数名にキーをつける. この時のキーの指定は “{}” を用い, 個個の要素指定は配列同様プレフィクス “$” で 行う:
# ハッシュの初期化
%week = ('sum', '始まり', 'wed', '中日', 'fri', '週末');
# 要素への参照 "週末" が表示される
print $week{fri};
型グロブとは, 同じ識別子 (プレフィクス以降) を持つあらゆる値を 表現するワイルドカードのようなものになる.