Perl практика

         

Блоки операторов.


{ 1_operator; 2_operator; 3_operator; ... last_operator; # with or witout ";" }



Оператор do {} while/until.


do { op_1; op_2; op_3; } while выражение;

Пример:

$stops = 0; do { $stops++; print "Next stop? "; chomp($location = <STDIN&gt); } until $stops &gt 5 $location eq 'home';



Оператор foreach.


Этот оператор получает список значений и присваивает их по очереди скалярной переменной, выполняя с каждым последующим присваиванием блок кода

foreach $i (@список) { op_1; op_2; op_3; }

Замечание:Скалярная переменная $i - локальна для данного цикла.

Пример:

@a = qw(one two three four five); foreach $b (reverse @a) { print $b; }

Имя скалярной переменной можно опустить. В этом случае, Вы указали имя переменной $_.

@a = qw(one two three four five); foreach (reverse @a) { print ; }

Используемая в цикле скалярная переменная представляет собой псевдоним для каждой переменной списка, а не просто копию ее значения. Изменяя скалярную переменную Вы изменяете и конкретный элемент списка:

@a = (3, 5, 7, 9); foreach $one (@a) { $one *= 3; } # @one = (9, 15, 21, 27);



Оператор if/unless.




if(выражение) { op_1; op_2; op_3; } else { op_1; op_2; op_3; }

Управляющее выражение вычисляется как строковая величина в скалярном контексте (если это уже строка, то ничего не изменится, если это число, то оно преобразуется в строку). Если строка пуста, либо состоит из одного символа "0", то значение выражения - ложь. Все остальное - "истина".

Пример:

print "how old are you? "; $a = <STDIN&gt ; chomp($a); if($a &lt 18) { print "So, you're not old enougt to vote, eh?\n"; } else { print "Old enough! Cool! So go vote!\n"; $voter++; }

Оператор unless:

print "how old are you? "; $a = <STDIN&gt ; chomp($a); unless($a &lt 18) { print "Old enough! Cool! So go vote!\n"; $voter++; }

if(выражение) { op_1; op_2; op_3; } elsif(выражение 2) { op_1; op_2; op_3; } else { op_1; op_2; op_3; }



Оператор while/until.


while(выражение) { op_1; op_2; op_3; }

until(выражение) { op_1; op_2; op_3; }