Чтобы не забыть. С двумерными массивами в перле можно работать так:
Плюс к тому — man perlref.
#!/usr/bin/perl -w
use strict;
# Так можно задать массив заранее известных чисел
my @arr = (
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
);
my @row = qw(20 21 22);
print $arr[1][1]; # 5
# Так можно добавить строку в массив
push(@arr, [10, 11, 12]);
# И так можно
push(@arr, [@row]);
print $arr[3][0]; # 10
print $arr[4][2]; # 22
@row = qw(33 34 35);
push(@arr, \@row); # Другой способ присваивания. С подвохом
print $arr[5][2]; # 35
@row = qw(44 45 46); # И тут вдруг меняется 5-й ряд.Плюс к тому — man perlref.
no subject
Date: 2006-09-06 01:56 pm (UTC)# "Двумерный" массив с переменным размером @arr = ( [1, 2, 3], [4, 5], [6] ); # Массив переменной размерности @arr = ( [[1, 2], [3, 4]], [5, 6], 7 ); # Массив с различным типом содержимого @arr = ( [[1, 2], {name => 'vasya'} ], sub { print $_[0] + $_[1] }, 7 ); # Массив с "дыркой" my @arr2; $arr2[0] = 1; $arr2[5] = 2; @arr = (1, undef, undef, undef, undef, 2); # Массив @arr2 и @arr похожи, но не идентичны!а синтаксис $arr[3][0] на самом деле является сокращенной формой написания $arr[3]->[0]. Кстати, варианты присваивания:
и
не идентичны, хотя и во многих случаях взаимозаменяемы. Дело в том, что первый вариант идентичен:
@row = ('33', '34', '35');и сохраняет строковые представления, которые
будут автоматически конвертированы в целочисленные
при необходимости. Разница видна в примере:
my @a = qw(12.700 13.0 010 00); my @b = (12.700, 13.0, 010, 00); print join("\t", @a), "\n"; print join("\t", @b), "\n";который выведет:
no subject
Date: 2006-09-06 02:58 pm (UTC)Массив ссылок
Date: 2006-09-07 04:09 am (UTC)Re: Массив ссылок
Date: 2006-09-07 04:13 am (UTC)Где шукать
Date: 2008-03-13 01:58 pm (UTC)