配列(2) 番号で要素を取得する

PerlでもC言語などのように、配列変数の後ろに[N]と添字を付けると、N番の要素を取り出せます。要素の番号は 0 から始まります。
ただし、注意しなくちゃいけないのは、取り出した要素はスカラー扱いなので、配列の変数名に付けるのは「@」ではなくて「$」になります。

# arrtest3.pl
my @fruits = ("Apple", "Orange", "Banana");
print $fruits[1];     # @fruits[1]; だとダメ 

配列変数 @fruits に代入された3つの文字列には、それぞれ番号が0から割り当てられます。Appleが0番、Orangeが1番、Bananaが2番。$fruits[1] だと「1番目の要素」という意味なので、実行すると……

D:\dev\perl>perl arrtest3.pl
Orange

と、1番のOrangeが出力されましたね。
それにしても、扱うデータによって変数名の頭につける記号が変わるなんて、ちょっと不思議な感じです。スカラー変数には何でも入るので「データの型」については気にしなくていいのかと思っていたのですが、「スカラー」と「配列」の区別はきっちりとつけるんですね。今まで体験した事がない構文です。
暗号文みたいなPerlの謎が少しだけ解けました。
ところで、要素への代入(要素の書き換え)もできるのでしょうか?

# arrtest3.pl
my @fruits = ("Apple", "Orange", "Banana");
print "Before: ", $fruits[1], "\n";
$fruits[1] = "Strawberry";
print "After:  ", $fruits[1], "\n";

番号を指定して値を代入しています。

D:\dev\perl>perl arrtest3.pl
Before: Orange
After:  Strawberry

ちゃんと書き換えられたようです。