яХМРЮЙЯХЯ.

Perl ОПНЦПЮЛЛЮ (ЯЙПХОР) ЯНЯРНХР ХГ ОНЯКЕДНБЮРЕКЭМНЯРХ ДЕЙКЮПЮЖХИ Х ОПЕДКНФЕМХИ. еДХМЯРБЕММН ВРН ДНКФМН АШРЭ НАЪГЮРЕКЭМН ДЕЙКЮПХПНБЮМН, ЩРН ТНПЛЮРШ НРВЕРНБ Х ОНДОПНЦПЮЛЛШ (ТСМЙЖХХ). бЯЕ МЕНАЗЪБКЕММШЕ ОЕПЕЛЕММШЕ, ЛЮЯЯХБШ ХЛЕЧР ГМЮВЕМХЕ 0 ХКХ null.

дЕЙКЮПЮЖХХ (НАЗЪБКЕМХЪ).

Perl ХЛЕЕР ЯБНАНДМШИ ТНПЛЮР. йНЛЛЕМРЮПХХ МЮВХМЮЧРЯЪ Я ЯХЛБНКЮ '#' Х ОПНДНКФЮЧРЯЪ ДН ЙНМЖЮ ЯРПНЙХ. дЕЙКЮПЮЖХХ ЛНЦСР ХЯОНКЭГНБЮРЭЯЪ Б КЧАНЛ ЛЕЯРЕ ОПНЦПЮЛЛШ РЮЙ ФЕ ЙЮЙ Х ОПЕДКНФЕМХЪ (statements), МН ДЕИЯРБСЧР НМХ РНКЭЙН Б ТЮГЕ ЙНЛОХКЪЖХХ ОПНЦПЮЛЛШ. нАШВМН ХУ ОНЛЕЫЮЧР ХКХ Б МЮВЮКЕ ХКХ Б ЙНМЖЕ ОПНЦПЮЛЛШ. дЕЙКЮПЮЖХЪ ОНДОПНЦПЮЛЛ ОНГБНКЪЕР ХЯОНКЭГНБЮРЭ ХЛЪ ОНДОПНЦПЮЛЛШ ЙЮЙ ЯОХЯЙНБШИ НОЕПЮРНП, МЮВХМЮЪ Я ЛНЛЕМРЮ ДЕЙКЮПХПНБЮМХЪ.
оПХЛЕП:

	sub test;	# дЕЙКЮПЮЖХЪ ОНДОПНЦПЮЛЛШ test

	$var1 = test $0; # хЯОНКЭГНБЮМХЕ ЙЮЙ НОЕПЮРНПЮ ЯОХЯЙЮ.

дЕЙКЮПЮЖХХ ОНДОПНЦПЮЛЛ ЛНЦСР АШРЭ ГЮЦПСФЕМШ ХГ НРДЕКЭМНЦН ТЮИКЮ ОПЕДКНФЕМХЕЛ require ХКХ ГЮЦПСФЕМШ Х ХЛОНПРХПНБЮМШ Б РЕЙСЫСЧ НАКЮЯРЭ ХЛЕМ ОПЕДКНФЕМХЕЛ use. оНДПНАМН ЯЛ. ЦКЮБС лНДСКХ.

оПНЯРНЕ ОПЕДКНФЕМХЕ.

оПНЯРНЕ ОПЕДКНФЕМХЕ НАЪГЮРЕКЭМН ГЮЙЮМВХБЮЕРЯЪ ЯХЛБНКНЛ ';' ЕЯКХ РНКЭЙН ЩРН МЕ ОНЯКЕДМЕЕ ОПЕДКНФЕМХЕ Б АКНЙЕ ЦДЕ ';' ЛНФМН НОСЯРХРЭ. гЮЛЕРЭРЕ, ВРН ЯСЫЕЯРБСЧР НОЕПЮРНПШ РЮЙХЕ ЙЮЙ eval{} Х do{}, ЙНРНПШЕ БШЦКЪДЪР ЙЮЙ ЯКНФМШЕ ОПЕДКНФЕМХЪ, МН МЮ ЯЮЛНЛ ДЕКЕ ЩРН РЕПЛШ Х РПЕАСЧР НАЪГЮРЕКЭМНЦН СЙЮГЮМХЪ ЙНМЖЮ ОПЕДКНФЕМХЪ.

кЧАНЕ ОПНЯРНЕ ОПЕДКНФЕМХЕ ЛНФЕР ЯНДЕПФЮРЭ single ЛНДХТХЙЮРНП ОЕПЕД ';'. яСЫЕЯРБСЧР ЯКЕДСЧЫХЕ single ЛНДХТХЙЮРНПШ:

	if EXPR
	unless EXPR
	while EXPR
	until EXPR

ЦДЕ EXPR - БШПЮФЕМХЕ, БНГБПЮЫЮЧЫЕЕ КНЦХВЕЯЙНЕ ГМЮВЕМХЕ true ХКХ false. лНДХТХЙЮРНПШ while Х until БШВХЯКЪЧРЯЪ Б МЮВЮКЕ ОПЕДКНФЕМХЪ ЙПНЛЕ АКНЙЮ do, ЙНРНПШИ БШОНКМЪЕРЯЪ ОЕПБШЛ.

if EXPR- лНДХТХЙЮРНП "ЕЯКХ". оПЕДКНФЕМХЕ БШОНКМЪЕРЯЪ, ЕЯКХ EXPR БНГБПЮЫЮЕР true.

оПХЛЕП:

	$var = 1;
	$var2 = 3 if $var > 0; # пЕГСКЭРЮР: $var2 = 3

while EXPR - лНДХТХЙЮРНП "ОНЙЮ". оПЕДКНФЕМХЕ БШОНКМЪЕРЯЪ ОНЙЮ EXPR = true

оПХЛЕП:

	$var = 1;
	print $var++ while $var < 5; # оЕВЮРЭ $var Я ХМЙПЕЛЕМРНЛ

пЕГСКЭРЮР: 1234

until EXPR- лНДХТХЙЮРНП "ДН ". оПЕДКНФЕМХЕ БШОНКМЪЕРЯЪ ДН РЕУ ОНП ОНЙЮ EXPR = false

оПХЛЕП:

	$var = 1;
	print $var++ until $var > 5; # оЕВЮРЭ $var Я ХМЙПЕЛЕМРНЛ

пЕГСКЭРЮР: 12345

unless EXPR - лНДХТХЙЮРНП "ЕЯКХ МЕ" . нАПЮРМШИ Й if. бШПЮФЕМХЕ БШОНКМЪЕРЯЪ ЕЯКХ EXPR = false.

оПХЛЕП:

	$var = 1;
	print $var++ unless $var > 5; # оЕВЮРЭ $var Я ХМЙПЕЛЕМРНЛ

пЕГСКЭРЮР: 1

яКНФМШЕ ОПЕДКНФЕМХЪ.

оНЯКЕДНБЮРЕКЭМНЯРЭ ОПНЯРШУ ОПЕДКНФЕМХИ, НЦПЮМХВЕММЮЪ ТСМЙЖХНМЮКЭМШЛХ НЦПЮМХВХРЕКЪЛХ, МЮГШБЮЕРЯЪ АКНЙНЛ. б Perl ЩРН ЛНФЕР АШРЭ ЖЕКШИ ТЮИК, ОНЯКЕДНБЮРЕКЭМНЯРЭ ОПЕДКНФЕМХИ Б НОЕПЮРНПЕ eval{} ХКХ ВЮЫЕ БЯЕЦН ЩРН ЛМНФЕЯРБН ОПНЯРШУ ОПЕДКНФЕМХИ, НЦПЮМХВЕММШУ ЙПСЦКШЛХ ЯЙНАЙЮЛХ '{}'.

яСЫЕЯРБСЧР ЯКЕДСЧЫХЕ БХДШ ЯКНФМШУ ОПЕДКНФЕМХИ:

нАПЮРХРЕ БМХЛЮМХЕ, ВРН ЯКНФМШЕ ОПЕДКНФЕМХЪ НОХЯЮМШ Б РЕПЛЮУ АКНЙНБ, Ю МЕ ОПЕДКНФЕМХИ, ЙЮЙ Б ЪГШЙЮУ C ХКХ Pascal. оНЩРНЛС МЕНАУНДХЛН БЯЕЦДЮ ХЯОНКЭГНБЮРЭ ЙПСЦКШЕ ЯЙНАЙХ ДКЪ НАНГМЮВЕМХЪ АКНЙЮ.

if (EXPR) BLOCK - бШВХЯКЪЕРЯЪ КНЦХВЕЯЙНЕ БШПЮФЕМХЕ EXPR Х ЕЯКХ true АКНЙ БШОНКМЪЕРЯЪ.
оПХЛЕП:

	$var =1;
	if ($var == 1)
	   { print $var,"\n";
	   }

пЕГСКЭРЮР: 1

if (EXPR) BLOCK else BLOCK2 - еЯКХ EXPR=true БШОНКМЪЕРЯЪ BLOCK ХМЮВЕ BLOCK2.
оПХЛЕП:

	$var =2;
	if ($var == 1)
	   { print "\$var = 1\n";
	   }
	else
	   { print "\$var МЕ ПЮБМН 1\n";
	   }

пЕГСКЭРЮР: $var МЕ ПЮБМН 1

if (EXPR1) BLOCK1 elsif (EXPR2) BLOCK2 ... else BLOCK - еЯКХ EXPR1=true БШОНКМЪЕРЯЪ BLOCK1 ХМЮВЕ ЕЯКХ EXPR2=true БШОНКМЪЕРЯЪ BLOCK2 ХМЮВЕ ... ХМЮВЕ BLOCK.
оПХЛЕП:

	$var = 1;
	if ($var == 0)
	   { print "\$var = 0\n";
	   }
	elsif ($var == 1)
	   { print "\$var = 1\n";
	   }
	else
	   { print "мЕ ХГБЕЯРМНЕ \$var\n";
	   }

пЕГСКЭРЮР: $var = 1

жХЙК While

жХЙК while БШОНКМЪЕР BLOCK ДН РЕУ ОНП ОНЙЮ EXPR = true. лЕРЙЮ LABEL МЕ НАЪГЮРЕКЭМЮ Х ЯНЯРНХР ХГ ХДЕМРХТХЙЮРНПЮ, ГЮБЕПЬЮЧЫЕЦНЯЪ ЯХЛБНКНЛ ':'. лЕРЙЮ МЕНАУНДХЛЮ ОПХ ХЯОНКЭГНБЮМХХ БМСРПХ АКНЙЮ ЖХЙКЮ СОПЮБКЪЧЫХУ НОЕПЮРНПНБ next, last Х redo. еЯКХ ЛЕРЙЮ БЯЕ ФЕ НРЯСРЯРБСЕР, РН ЩРХ НОЕПЮРНПШ ЯЯШКЮЧРЯЪ Й МЮВЮКС АКХФЮИЬЕЦН ЖХЙКЮ. аКНЙ ОНЯКЕ continue БШОНКМЪЕРЯЪ БЯЕЦДЮ ОЕПЕД РЕЛ ЙЮЙ БШВХЯКЪЕРЯЪ КНЦХВЕЯЙНЕ БШПЮФЕМХЕ EXPR. щРН ОНДНАМН EXPR3 Б ОПЕДКНФЕМХХ for, ОНЩРНЛС Б ЩРНЛ АКНЙЕ СДНАМН ХГЛЕМЪРЭ ЯВЕРВХЙХ Х ТКЮЦХ ЖХЙКЮ ДЮФЕ ЕЯКХ ОПХЛЕМЪЕРЯЪ НОЕПЮРНП next.

нОЕПЮРНПШ СОПЮБКЕМХЪ ЖХЙКНЛ.

next - ОНДНАЕМ continue Б я. оЕПЕУНДХР Й МЮВЮКС РЕЙСЫЕЦН ЖХЙКЮ Р.Е. ОНБРНПЪЕР ХРЕПЮЖХЧ.

оПХЛЕП:

	M1:
	while ($i < 6)
	    {
	    ++$i;	# сБЕКХВХБЮЕЛ ЯВЕРВХЙ МЮ 1
	    next M1 if $i < 3; # оЕПЕУНДХЛ Б МЮВЮКН ЕЯКХ $i < 3
	    ++$i;	# ХМЮВЕ СБЕКХВХБЮЕЛ ЯВЕРВХЙ ЕЫЕ ПЮГ МЮ 1
	    }
	continue
	    {
	    print "$i "; # оЕВЮРЮЕЛ $i
	    }

пЕГСКЭРЮР: 1 2 4 6

last - ОНДНАЕМ НОЕПЮРНПС break Б ЪГШЙЕ я. мЕЛЕДКЕММН ОПЕПШБЮЕР ЖХЙК. аКНЙ continue ОПНОСЯЙЮЕРЯЪ.

оПХЛЕП:

        M1:
        while ($i < 6)
            {
            ++$i;       # сБЕКХВХБЮЕЛ ЯВЕРВХЙ МЮ 1
            last M1 if $i > 3; # бШУНД ХГ ЖХЙКЮ ЕЯКХ $i > 3
            ++$i;       # ХМЮВЕ СБЕКХВХБЮЕЛ ЯВЕРВХЙ ЕЫЕ ПЮГ МЮ 1
            }
continue {
            print "$i "; # оЕВЮРЮЕЛ $i
}

пЕГСКЭРЮР: 2 4

redo - МЮВЮРЭ МНБШИ ЖХЙК МЕ БШВХЯКЪЪ EXPR Х МЕ БШОНКМЪЪ continue АКНЙ.

оПХЛЕП:

        M1:
        while ($i < 6)
            {
            ++$i;       # сБЕКХВХБЮЕЛ ЯВЕРВХЙ МЮ 1
            redo M1 if $i == 3; # дЮКЕЕ ОПНОСЯРХРЭ ДКЪ $i = 3
            ++$i;       # ХМЮВЕ СБЕКХВХБЮЕЛ ЯВЕРВХЙ ЕЫЕ ПЮГ МЮ 1
            }
continue {
            print "$i "; # оЕВЮРЮЕЛ $i
}

пЕГСКЭРЮР: 2 5 7

жХЙК for.

LABEL for (EXPR1; EXPR2; EXPR3) BLOCK
нОЕПЮРНП for ОНКМНЯРЭЧ ЮМЮКНЦХВЕМ НОЕПЮРНПС for Б я. б ОЕПЕД МЮВЮКНЛ ЖХЙКЮ БШОНКМЪЕРЯЪ EXPR1, ЕЯКХ EXPR2 = true БШОНКМЪЕРЯЪ АКНЙ, ГЮРЕЛ БШОНКМЪЕРЯЪ EXPR3.

оПХЛЕП:

	for ($i = 2; $i < 5; ++$i)
           {
           print $i, " ";
           }
        print "\nоНЯКЕ ЖХЙКЮ i = $i\n";

пЕГСКЭРЮР:

жХЙК foreach.

LABEL foreach VAR (LIST) BLOCK
оЕПЕЛЕММНИ VAR ОПХЯБЮХБЮЕРЯЪ ОННВЕПЕДМН ЙЮФДШИ ЩКЕЛЕМР ЯОХЯЙЮ LIST Х БШОНКМЪЕРЯЪ АКНЙ. еЯКХ VAR НОСЫЕМН, РН ЩКЕЛЕМРШ ОПХЯБЮХБЮЧРЯЪ БЯРПНЕММНИ ОЕПЕЛЕММНИ $_. еЯКХ Б РЕКЕ АКНЙЮ ХГЛЕМЪРЭ ГМЮВЕМХЕ VAR РН ЩРН БШГНБЕР ХГЛЕМЕМХЕ Х ЩКЕЛЕМРНБ ЯОХЯЙЮ Р.Й. VAR ТЮЙРХВЕЯЙХ СЙЮГШБЮЕР МЮ РЕЙСЫХИ ЩКЕЛЕМР ЯОХЯЙЮ. бЛЕЯРН ЯКНБЮ foreach ЛНФМН ОХЯЮРЭ ОПНЯРН for - ЩРН ЯКНБЮ ЯХМНМХЛШ.

оПХЛЕП:

        @ЛЕЯЪЖ = ("ЪМБЮПЭ","ТЕБПЮКЭ","ЛЮПР");  # яНГДЮКХ ЛЮЯЯХБ
        foreach $i (@ЛЕЯЪЖ)
            {
            print $i," ";       # оЕВЮРЭ $i
            }

пЕГСКЭРЮР: ЪМБЮПЭ ТЕБПЮКЭ ЛЮПР

оПХЛЕП:

        @ЛЕЯЪЖ = ("ЪМБЮПЭ","ТЕБПЮКЭ","ЛЮПР");  # яНГДЮКХ ЛЮЯЯХБ
        foreach $i (@ЛЕЯЪЖ)
            {
            $i = uc($i); # оЕПЕБЕКХ Б БЕПУМХИ ПЕЦХЯРП
            }
        print @ЛЕЯЪЖ;

пЕГСКЭРЮР: ъмбюпэтебпюкэлюпр

оПХЛЕП:

	for $i (3,5,7)
	    {
	    print "$i ";
	    }

пЕГСКЭРЮР: 3 5 7

аКНЙХ Х НОЕПЮРНП switch.

аКНЙ МЕ ГЮБХЯХЛН НР РНЦН ХЛЕЕР НМ ЛЕРЙС ХКХ МЕР ЯЕЛЮМРХВЕЯЙХ ОПЕДЯРЮБКЪЕР ЯНАНИ ЖХЙК ЙНРНПШИ БШОНКМЪЕРЯЪ НДХМ ПЮГ. оНЩРНЛС ДЕИЯРБХЕ НОЕПЮРНПНБ ЖХЙКЮ next, last, redo - ЮМЮКНЦХВМН НОХЯЮММНЛС БШЬЕ. аКНЙХ СДНАМШ ДКЪ ОНЯРПНЕМХЪ switch (ОЕПЕЙКЧВЮРЕКЭ) ЯРПСЙРСП. б Perl МЕР ЯОЕЖХЮКЭМНЦН НОЕПЮРНПЮ switch ОНДНАМНЦН ЪГШЙС я ОНЩРНЛС БШ ЯЮЛХ ЛНФЕРЕ ЯНГДЮБЮРЭ СДНАМШЕ ДКЪ БЮЯ ЙНМЯРПСЙЖХХ. нОШР ЮБРНПЮ ОНЙЮГШБЮЕР ВРН ДКЪ ОПНЯРНРШ МЮОХЯЮМХЪ КСВЬЕ БЯЕЦН ОНДУНДХР ЙНМЯРПСЙЖХЪ БХДЮ if ... elsif ... else ... УНРЪ ЛНФМН ЯНВХМХРЭ Х МЕВРН ОНДНАМНЕ:

	SWITCH:
	{
	if ($i ==1 ) { .....; last SWITCH; }
	if ($i ==2 ) { .....; last SWITCH; }
	if ($i ==3 ) { .....; last SWITCH; }
	$default = 13;
	}

бШАХПЮИРЕ ЯЮЛХ ОН ЯБНЕЛС БЙСЯС.

нОЕПЮРНП goto.

б Perl ЯСЫЕЯРБСЕР НОЕПЮРНП goto УНРЪ ЦДЕ , ЙЮЙ Х ЙНЦДЮ ЕЦН ОПХЛЕМЪРЭ ЙЮЙ ЦНБНПХК уНДФЮ мЮЯПЕДДХМ "рНМЙХИ ТХКНЯНТЯЙХИ БНОПНЯ". дКЪ МЮВХМЮЧЫХУ ОПНЦПЮЛЛХЯРНБ ЙНРНПШЛ НР РЮЙ "МСФЕМ" Ъ АШ БННАЫЕ ОНЯНБЕРНБЮК "ГЮАШРЭ" Н ЕЦН ЯСЫЕЯРБНБЮМХХ. нДМЮЙН ОПХ ЯНГДЮМХХ АНКЭЬХУ ОПНХГБНДЯРБЕММШУ ГЮДЮВ МЮ ОНЯКЕДМЕЛ ЩРЮОЕ НЯНАЕММН ОПХ НРПЮАНРЙЕ "НРБЮКЭМШУ" НЬХАНВМШУ ЯХРСЮЖХИ ЙНМЕВМН goto МСФЕМ.

б Perl ПЕЮКХГНБЮМН РПХ ТНПЛШ goto. goto - ЛЕРЙЮ, goto - БШПЮФЕМХЕ Х goto - ОНДОПНЦПЮЛЛЮ.

goto ЛЕРЙЮ БШОНКМЪЕР МЕОНЯПЕДЯРБЕММШИ ОЕПЕУНД МЮ СЙЮГЮММСЧ ЛЕРЙС.
goto - БШПЮФЕМХЕ бШВХЯКЪЕР ХЛЪ ЛЕРЙХ Х ДЕКЮЕР ЯННРБЕРЯРБСЧЫХИ ОЕПЕУНД. мЮОПХЛЕП ЕЯКХ ЛШ УНРХЛ ЯДЕКЮРЭ ОЕПЕУНД МЮ НДМС ХГ РПЕУ ЛЕРНЙ "M1:", "M2:" ХКХ "M3:" Б ГЮБХЯХЛНЯРХ НР ГМЮВЕМХИ ОЕПЕЛЕММНИ $i ПЮБМНИ 0, 1 ХКХ 2 РН ЩРН КСВЬЕ ЯДЕКЮРЭ ЯКЕДСЧЫХЛ НАПЮГНЛ:
	goto ("M1", "M2", "M3")[$i];

ГДЕЯЭ $i ХЯОНКЭГСЕРЯЪ ЙЮЙ ХМДЕЙЯ ЛЮЯЯХБЮ СЙЮГЮММНЦН МЕОНЯПЕДЯРБЕММН Б БШПЮФЕМХХ.

goto ОНДОПНЦПЮЛЛЮ ДНБНКЭМН ПЕДЙХИ ЯКСВЮИ Р.Й. БЯЕЦДЮ ОПНЫЕ Х МЮДЕФМЕИ БШГБЮРЭ ОНДОПНЦПЮЛЛС "ЕЯРЕЯРБЕММШЛ" НАПЮГНЛ.

POD НОЕПЮРНПШ. дНЙСЛЕМРХПНБЮМХЕ ОПНЦПЮЛЛ.

б Perl ПЕЮКХГНБЮМ НВЕМЭ СДНАМШИ ЛЕУЮМХГЛ ДКЪ МЮОХЯЮМХЪ ДНЙСЛЕМРЮЖХХ Б ЛНЛЕМР ЯНГДЮМХЪ ОПНЦПЮЛЛШ. дКЪ ЩРНЦН ОПХЛЕМЪЧРЯЪ ЯОЕЖХЮКЭМШЕ POD НОЕПЮРНПШ. еЯКХ Б РЕКЕ ОПНЦПЮЛЛШ ХМРЕПОПЕРЮРНП БЯРПЕВЮЕР НОЕПЮРНП МЮВХМЮЧЫХИЯЪ Я ЯХЛБНКЮ '=' МЮОПХЛЕП:

	= head мЮАНП ЯРЮМДЮПРМШУ ОПНЖЕДСП

РН ОПНОСЯЙЮЕРЯЪ БЯЕ ДН ЯКНБЮ '=cut'. щРН СДНАМН ДКЪ БЙКЧВЕМХЪ ДКХММШУ МЮ МЕЯЙНКЭЙН ЯРПНЙ ХКХ ЯРПЮМХЖ ЙНЛЛЕМРЮПХЕБ. гЮРЕЛ Я ОНЛНЫЭЧ ЯОЕЖХЮКЭМНИ ОПНЦПЮЛЛШ pod ЛНФМН НРДЕКХРЭ РЕЙЯР ДНЙСЛЕМРЮЖХХ НР РЕЙЯРЮ ОПНЦПЮЛЛШ.

[мЮГЮД] [яНДЕПФЮМХЕ] [бОЕПЕД]