|
||||||
Управляющие структуры.
Блоки операторов.{ 1_operator; 2_operator; 3_operator; ... last_operator; # with or witout ";" } Оператор if/unless.if(выражение) { op_1; op_2; op_3; } else { op_1; op_2; op_3; } Управляющее выражение вычисляется как строковая величина в скалярном контексте (если это уже строка, то ничего не изменится, если это число, то оно преобразуется в строку). Если строка пуста, либо состоит из одного символа "0", то значение выражения - ложь. Все остальное - "истина". Пример: print "how old are you? "; $a = <STDIN> ; chomp($a); if($a < 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> ; chomp($a); unless($a < 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; } Оператор do {} while/until.do { op_1; op_2; op_3; } while выражение; Пример: $stops = 0; do { $stops++; print "Next stop? "; chomp($location = <STDIN>); } until $stops > 5 || $location eq 'home';
Оператор for.
for($i = 1; $i <= 10; $i++) { print "$i "; }
Оператор 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); |
||||||
|