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{} ХКХ ВЮЫЕ БЯЕЦН ЩРН ЛМНФЕЯРБН ОПНЯРШУ ОПЕДКНФЕМХИ, НЦПЮМХВЕММШУ ЙПСЦКШЛХ ЯЙНАЙЮЛХ '{}'.
яСЫЕЯРБСЧР ЯКЕДСЧЫХЕ БХДШ ЯКНФМШУ ОПЕДКНФЕМХИ:
LABEL while (EXPR) BLOCK
LABEL while (EXPR) BLOCK continue BLOCK
LABEL for (EXPR; EXPR; EXPR) BLOCK
LABEL foreach VAR (LIST) BLOCK
LABEL BLOCK continue BLOCK
нАПЮРХРЕ БМХЛЮМХЕ, ВРН ЯКНФМШЕ ОПЕДКНФЕМХЪ НОХЯЮМШ Б РЕПЛЮУ АКНЙНБ, Ю МЕ ОПЕДКНФЕМХИ, ЙЮЙ Б ЪГШЙЮУ 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 БШОНКМЪЕР 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
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";
пЕГСКЭРЮР:
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
аКНЙ МЕ ГЮБХЯХЛН НР РНЦН ХЛЕЕР НМ ЛЕРЙС ХКХ МЕР ЯЕЛЮМРХВЕЯЙХ ОПЕДЯРЮБКЪЕР ЯНАНИ ЖХЙК ЙНРНПШИ БШОНКМЪЕРЯЪ НДХМ ПЮГ. оНЩРНЛС ДЕИЯРБХЕ НОЕПЮРНПНБ ЖХЙКЮ 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; }
бШАХПЮИРЕ ЯЮЛХ ОН ЯБНЕЛС БЙСЯС.
б 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 ЛНФМН НРДЕКХРЭ РЕЙЯР ДНЙСЛЕМРЮЖХХ НР РЕЙЯРЮ ОПНЦПЮЛЛШ.
[мЮГЮД] [яНДЕПФЮМХЕ] [бОЕПЕД]