Массивы и списочные данные.
Список - это упорядоченные скалярные данные. Массив - переменная,
которая содержит список.
(1, 2, 3);
("fred", 4.5);
($a, 17);
($a+$b, 17);
(); # пустой список
Оператор конструктора списка. Пример:
(1 .. 5); # (1, 2, 3, 4, 5);
(1.2 .. 5.2); # (1.2, 2.2, 3.2, 4.2, 5.2);
($a .. $b);
(1.3 .. 3.1); # (1.3, 2.3)
@a = ("fred", "betty");
@a = qw(fred betty);
Использование списочного литерала в функции
print("The answer is ", $a, "\n");
Пример:
@fred;
Присваивание.
@fred = (1, 2, 3);
@barney = @fred;
@huh = 1; #(1)
@fred = qw(one two);
@barney = (4, 5, @fred, 6, 7);
@barney = (@barney, "last");
($a, $b, $c) = (1, 2, 3);
($a, $b) = ($b, $c);
($d, @fred) = ($a, $b, $c);
Если переменная-массив присваивается переменной-скаляру - размер массива:
@fred = (4, 5, 6);
$a= @fred;
Обращение к элементам массива.
Элементы массива нумеруются целыми числами.
@fred = (7, 8, 9)
$b = $fred[1];
$fred[5] = 0;
($fred[0], $fred[1]) = ($fred[1], $fred[0]);
Срез - обращение к списку элементов массива.
@fred[0, 1];
@fred[0, 1] = fred[1, 0];
@fred[0, 1, 2] = fred[1, 1, 1];
@fred[1, 2] = (9, 10);
@who = ( qw(fred barney betty wilma))[2, 3];
При обращении к элементу за пределами массива - undef. Массивы
автоматически расширяются.
@betty = (1, 2, 3);
$betty[6] = "ho"; # (1, 2, 3, undef, undef, undef, "ho");
@fred = qw(fred wilma pebbles dino);
print $fred[-1]; # "dino"
print $#fred; # 3
print $fred[$#fred]; # "dino"
Функции push и pop.
Использование массива в качестве стека.
push(@mylist, $newval);
$oldval = pop(@mylist);
Работает и со списками:
@mylist = (1, 2, 3);
push(@mylist, 4, 5, 6);
Функции shift и unshift.
Функция reverse.
@a = ( 7, 8, 9);
@b = reverse(@a); # список-аргумент не меняется
@b = reverse(@b);
Функция sort.
Возвращает отсортированный список не меняя оригинала.
@x = sort("small", "medium", "large");
Функция chomp.
@stuff = ("hello\n", "world\n", "happy days")
chomp(@stuff);
@fred = ("a", "bb");
$all = "Now @fred";
|