小池啓仁 ヒロヒト応援ブログ By はてな

小池啓仁(コイケヒロヒト)の動画など。

小池啓仁 ヒロヒト応援ブログ By はてな

Perlで同名の$aaaと@aaaは別物か?

普通の言語(C,Java,VB等)経験者がPerlをやり始めると必ず悩む、同名のスカラー変数と配列変数です。
結論から言うと同名のスカラー変数と配列変数は、全くの別物です。
しかし、インデックス付きスカラー変数$aaa[0]で、配列変数@aaaの要素へアクセスする場合は、別物ではないのです。
では、具体的に説明します。

$aaa = "xxxxx";
@aaa = ("11111", "22222", "33333");

とした時に、$aaaには『xxxxx』、$aaa[0]には『11111』、$aaa[1]には、『22222』が格納されます。
つまり、$aaaと$aaa[0]は全くの別物なのです。
したがって、$aaaと@aaaも全くの別物なのです。

あくまでも、スカラー変数$aaa[0]の値は、配列変数@aaaのゼロ番目の要素の値と同じ物なのです。


ちなみに、スカラー変数とは、頭に$付く変数で、数値や文字列(一文字も)そのものが格納できます。
一方、配列変数は、頭に@が付く変数で、数値や文字列(一文字も)の配列が格納できます。