Perl практика

         

Функции push и pop.


Использование массива в качестве стека.

push(@mylist, $newval); $oldval = pop(@mylist);

Работает и со списками:

@mylist = (1, 2, 3); push(@mylist, 4, 5, 6);



Функция chomp.


@stuff = ("hello\n", "world\n", "happy days") chomp(@stuff);



Функция reverse.


@a = ( 7, 8, 9); @b = reverse(@a); # список-аргумент не меняется @b = reverse(@b);



Функция sort.


Возвращает отсортированный список не меняя оригинала.

@x = sort("small", "medium", "large");



Литеральное представление.




(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 = (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"



Присваивание.


@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;



Список и массив.


Список - это упорядоченные скалярные данные. Массив - переменная, которая содержит список.