my @arr = ();
- беспорядочный, неэффективный способ записи
my @arr;
Что он делает: Создает новый пустой лексически выделенный массив с именем @arr
.
Лексически ограниченныйозначает, что @arr
виден только (то есть может использоваться только) внутри самых внутренних проклятий (или файла), в которых он содержится.
Присвоение пустого списка массиву очищает его, но вновь созданные массивы гарантированноуже пусто.
my @arr = qw( A B C D );
эквивалентно
my @arr = split(' ', q( A B C D ));
Это удобный (то есть более короткий) способ записи
my @arr = ( 'A', 'B', 'C', 'D' );
Что он делает: Он создает новый лексически выделенный массив с именем @arr
и назначает ему четыре строки (A
, B
, C
и D
).
Вы получите то же самоерезультат из
my @arr;
$arr[0] = 'A';
$arr[1] = 'B';
$arr[2] = 'C';
$arr[3] = 'D';
(@arr, @arr = ( ))
не имеет смысла.Это составляет @arr = ()
.
my @arr = qw (A B C D); my @arr = ();
бессмысленно.Это составляет my @arr;
.