Всем, кто уже работал с массивами в других языках, покажется вполне естественным, что в Perl предусмотрена возможность обращения к элементу массива по индексу. Элементы массивов нумеруются последовательными целыми числами с шагом 1, начиная с нуля:
$fred[0] = "yabba";
$fred = "dabba";
$fred = "doo";
Имя массива (в данном случае "fred") существует в отдельном пространстве имен, не зависимом от скаляров. В той же программе можно создать скалярную переменную с именем $fred; Perl будет различать эти переменные и не перепутает их. (Зато перепутает программист, который будет заниматься сопровождением вашего кода, так что не стоит из прихоти называть все переменные одним именем!) Элементы массива вида $fred могут использоваться везде3, где может использоваться скалярная переменная типа $fred. Например, можно получить значение элемента массива или изменить его с помощью тех же выражений, которые уже встречались нам в предыдущей главе:
print $fred[0];
$fred = "diddley";
$fred .= "whatsis";
Конечно, вместо индекса может использоваться любое выражение с числовым результатом. Если оно не является целым числом, то будет автоматически усечено до ближайшего меньшего целого:
$number = 2.71828;
print $fred[$number - 1]; # Равносильно print $fred
Если индекс обозначает элемент, выходящий за границы массива, соответствующее значение будет равно undef. Все происходит так же, как с обычными скалярными переменными; если в переменной никогда не сохранялось значение, она содержит undef:
$blank = $fred[ 142_857 ]; # Неиспользованный элемент массива содержит undef
$blanc = $mel; # Неиспользованный скаляр $mel также содержит undef