Работа с массивами в Perl
Перевод достаточно вольный. Комментарии и предложения оставляете в виде комментариев, внизу страницы
- Инициализация (очистка) массива.
- Определение существования элемента массива.
- Определение количества элементов в массиве.
Автор статьи не дает никаких гарантий, что код приведенный в ней будучи "преобразованный" с помощью Copy/Past заработает. Все примеры работали на момент написания статьи.
Инициализация (очистка) массива.
Реализация
my @array = ();
Реализация
$#array - это индекс (порядковый номер) последнего элемента массива (на единицу меньше, чем количество элементов в массиве, так как массив начинается с нуля). Присвоение $#array изменяет длину массива @array, таким образом вы можете уничтожить (или очистить) все элементы массива между заданным при присвоении и последним. При присвоении -1, все элементы уничтожаются и массив очищается. Я рекомендую следующее решение:
$#array = -1;
Определение существования элемента массива
Реализация
print "Значение СУЩЕСТВУЕТ, но может быть неопределенно.\n" if exists $array[ $index ]; print "Значение ОПРЕДЕЛЕНО, но может быть false.\n" if defined $array[ $index ]; print "Зачениие элемента с индексом $index TRUE.\n" if $array[ $index ];
Определение количества элементов в массиве.
Реализация
Если вы хотите вывести количество элементов в массиве, то вот самый простой способ:
print "size of array: " . @array . ".\n";
Реализация
Если вы хотите присвоить размер массива переменной, то просто используйте скалярный контекст:
$size = @array; print "size of array: $size.\n";
Явно, скалярный контекст может быть получен с помощью функции scalar
$size = scalar @array; print "size of array: $size.\n";
Кроме этого, существует еще один способ получения количества элементов массива. Я рекомендую использовать именно его:
Реализация
$size = $#array + 1;
Автор
Alex BATKO <abatko AT cs.mcgill.ca>
Спасибо всем, кто присылал комментарии и предложения.