Ветвление позволяет выполнять тот или иной кусок кода в зависимости от кого-то условия. Т.е. если переменная $x равна 10 вывести её на экран, а если меньше 10, то увеличить её на еденицу. В Perl ветвление обеспечивают операторы if, unless, и так называемый "условный оператор".
if - это даже не просто оператор, это конструкция вида if-elsif-else. Любой элемент этой конструкции (кроме первого), можно опустить. Действует это так, если условия в скобках оператора if истинно, то выполняется блок операторов идущих в фигурных скобках, если же условие ложно, то выполняется проверка в скобках elsif, если и оно ложно, то выполняется блок операторов в фигурных скобках оператора else. Примеры:
#!/usr/bin/perl -w for($x=0; $x<10; $x++) { if($x==5) { print $x; } }
Данный пример выведит только цифру 5. Но в нём не предусмотрены действия на случай если $x не равно пяти. Добавим это
#!/usr/bin/perl -w for($x=0; $x<10; $x++) { if($x==5) { print "$x\n"; } else { print "Счётчик цикла не равен пяти\n"; } }
А если надо проверить не равен ли он ещё и 7? Можно запихать внутрь этого if ещё одну проверку, но правильнее сделать так:
#!/usr/bin/perl -w for($x=0; $x<10; $x++) { if($x==5) { print "$x\n"; } elsif ($x==7) { print "$x\n"; } else { print "Счётчик цикла не равен ни пяти, ни семи :(\n"; } }
Этих elsif'оф можно поставить немеряное кол-во:
#!/usr/bin/perl -w for($x=1; $x<13; $x++) { if($x==1) { print "$x\n"; } elsif($x==2) { print "$x\n"; } elsif($x==3) { print "$x\n"; } elsif($x==4) { print "$x\n"; } elsif($x==5) { print "$x\n"; } elsif($x==6) { print "$x\n"; } elsif($x==7) { print "$x\n"; } elsif($x==8) { print "$x\n"; } elsif($x==9) { print "$x\n"; } else { print "Я только до десяти считать умею... :(\n"; } }
Громоздко, да? :)
unless аналогичен оператору if, но выполняет свой блок операторов, если условие в скобках ложно.
Условный оператор имеет вид "условие ? действие если истинно : действие если ложно". Выглядит это примерно так:
#!/usr/bin/perl -w for($x=1; $x<13; $x++) { $x==5?print "$x\n":print "Переменная не равна пяти\n"; }
Вот и всё. Надеюсь понятно объясняю :)