б Perl ЯСЫЕЯРБСЕР РПХ РХОЮ ЯРПСЙРСП ДЮММШУ: ЯЙЮКЪПШ, ЛЮЯЯХБШ ЯЙЮКЪПНБ Х УЕЬХ (hashes) - ЮЯЯНЖХЮРХБМШЕ ЛЮЯЯХБШ ЯЙЮКЪПНБ. нАШВМН ЩКЕЛЕМРШ ЛЮЯЯХБНБ ХМДЕЙЯХПСЧРЯЪ ЖЕКШЛХ ВХЯКЮЛХ, ОЕПБШИ ЩКЕЛЕМР - МСКЕБНИ. нРПХЖЮРЕКЭМНЕ ГМЮВЕМХЕ ХМДЕЙЯЮ НАНГМЮВЮЕР МНЛЕП ОНГХЖХХ ЩКЕЛЕМРЮ Я ЙНМЖЮ. уЕЬХ ХМДЕЙЯХПСЧРЯЪ ЯРПНЙЮЛХ ЯХЛБНКНБ.
хЛЕМЮ ЯЙЮКЪПМШУ ОЕПЕЛЕММШУ БЯЕЦДЮ МЮВХМЮЧРЯЪ Я ЯХЛБНКЮ '$' ДЮФЕ ЙНЦДЮ НАНГМЮВЮЧР ЩКЕЛЕМР ЛЮЯЯХБЮ.
оПХЛЕП:
$var1 # оПНЯРНИ ЯЙЮКЪП 'var1' $var1[0] # оЕПБШИ ЩКЕЛЕМР ЛЮЯЯХБЮ 'var1' $var1{'first'} # щКЕЛЕМР Я ХМДЕЙЯНЛ 'first'
б ЯКСВЮЕ ХЯОНКЭГНБЮМХЪ ХЛЕМХ ЛЮЯЯХБЮ "ЖЕКХЙНЛ" ХКХ ЕЦН "ЯПЕГЮ" ОЕПЕД ХЛЕМЕЛ ЛЮЯЯХБЮ ЯРЮБХРЯЪ ЯХЛБНК '@'.
оПХЛЕП:
@var1 # бЯЕ ЩКЕЛЕМРШ ЛЮЯЯХБЮ var1 ( $var1[0], $var1[1], ... $var1[n]) @var1[1,3,10] # щКЕЛЕМРШ $var1[1], $var1[3], $var1[10] @var1{'first','last'} # РН ФЕ ВРН Х ( $var1{'first'}, $var1{'last'} )
уЕЬ "ЖЕКХЙНЛ" МЮВХМЮЕРЯЪ Я ЯХЛБНКЮ '%'.
оПХЛЕП:
%var, %key, %years
хЛЕМЮ ОНДОПНЦПЮЛЛ МЮВХМЮЧРЯЪ ЯХЛБНКНЛ '&', ЕЯКХ ХГ ЙНМРЕЙЯРЮ МЕ БХДМН, ВРН ЩРН ОНДОПНЦПЮЛЛЮ.
оПХЛЕП:
&sub1, &test_prog, test(12)
хЛЕМЮ РЮАКХЖ ЯХЛБНКНБ БЯЕЦДЮ МЮВХМЮЧРЯЪ ЯХЛБНКНЛ '*'.
йЮФДШИ РХО ОЕПЕЛЕММШУ ХЛЕЕР ЯБНЧ НАКЮЯРЭ ОЮЛЪРХ ОНЩРНЛС $var1 Х $var1[0] ЯНБЕПЬЕММН ПЮГМШЕ ОЕПЕЛЕММШЕ, УНРЪ $var1[0] ВЮЯРЭ ЛЮЯЯХБЮ @var1. рЮЙ ФЕ @var1 Х %var1 - ПЮГМШЕ ЛЮЯЯХБШ ОЕПЕЛЕММШУ.
хЛЕМЮ ОЕПЕЛЕММШУ ЛНЦСР ЯНДЕПФЮРЭ КЧАШЕ АСЙБЕММН-ЖХТПНБШЕ ЯХЛБНКШ ГЮ ХЯЙКЧВЕМХЕЛ ОПНАЕКЮ Х РЮАСКЪЖХХ. щРХ ЯХЛБНКШ ХЯОНКЭГСЧРЯЪ Б ЙЮВЕЯРБЕ ПЮГДЕКХРЕКЕИ. аНКЭЬХЕ Х ЛЮКШЕ АСЙБШ ПЮГКХВЮЧРЯЪ ОНЩРНЛС $var1 Х $Var1 - ПЮГМШЕ ОЕПЕЛЕММШЕ. б Perl ОН СЛНКВЮМХЧ ХЛЕМЮ ЛЕРНЙ Х СЙЮГЮРЕКЕИ ТЮИКНБ ОХЬСР АНКЭЬХЛХ АСЙБЮЛХ.
аНКЭЬНЕ ГМЮВЕМХЕ ДКЪ ОПЮБХКЭМНЦН СОНРПЕАКЕМХЪ БЯРПНЕММШУ ТСМЙЖХИ ХЛЕЕР ЙНМРЕЙЯР ХЯОНКЭГНБЮМХЪ ПЕГСКЭРЮРЮ ЩРХУ ТСМЙЖХИ, Р.Й. Б ОПНРХБМНЛ ЯКСВЮЕ НМХ БНГБПЮЫЮЧР ЯНБЕПЬЕММН "МЕОНМЪРМШИ" ПЕГСКЭРЮР. б Perl ХЛЕЕРЯЪ ДБЮ ЦКЮБМШУ ЙНМРЕЙЯРЮ: ЯЙЮКЪПМШИ Х ЯОХЯНЙ (list). оПНЫЕ ЦНБНПЪ, ЕЯКХ Б КЕБНИ ВЮЯРХ БШПЮФЕМХЪ ХЛЕЕРЯЪ ББХДС НДМН ЕДХМЯРБЕММНЕ ГМЮВЕМХЕ, РН ЩРН ЯЙЮКЪПМШИ ЙНМРЕЙЯР. еЯКХ ЛМНФЕЯРБН ГМЮВЕМХИ - ЯОХЯНЙ.
оПХЛЕП:
$var1 = <>; # оПНВХРЮРЭ НДМС ЯРПНЙС ТЮИКЮ @var1 = <>; # оПНВХРЮРЭ БЯЕ ЯРПНЙХ ТЮИКЮ Б ЛЮЯЯХБ @var1 $var1 = (1,2,3); # $var = 3 - ЙНКХВЕЯРБН ЩКЕЛЕМРНБ @var1 = (1,2,3); # яНГДЮМХЕ ЛЮЯЯХБЮ @var1 Я ЩКЕЛЕМРЮЛХ 1,2,3
бЯЕ ДЮММШЕ Б Perl ЩРН ЯЙЮКЪПШ, ЛЮЯЯХБШ ЯЙЮКЪПНБ Х УЕЬХ ЯЙЮКЪПНБ. яЙЮКЪПМШЕ ОЕПЕЛЕММШЕ ЛНЦСР ЯНДЕПФЮРЭ ВХЯКЮ, ЯРПНЙХ Х ЯЯШКЙХ. оПЕНАПЮГНБЮМХЕ ВХЯКЮ - ЯРПНЙХ ОПНХЯУНДХР ЮБРНЛЮРХВЕЯЙХ ОН СЛНКВЮМХЧ. яЙЮКЪП ЛНФЕР ХЛЕРЭ РНКЭЙН НДМН ЕДХМЯРБЕММНЕ ГМЮВЕМХЕ, УНРЪ ЩРН ЛНФЕР АШРЭ ЯЯШКЙЮ МЮ ЛЮЯЯХБ ЯЙЮКЪПНБ. рЮЙ ЙЮЙ Perl ЯЮЛ ОПЕНАПЮГНБШБЮЕР ВХЯКЮ Б ЯРПНЙХ Х МЮНАНПНР, РН ОПНЦПЮЛЛХЯРС МЕР МЕНАУНДХЛНЯРХ ДСЛЮРЭ Н РНЛ, ВРН БНГБПЮЫЮЕР ТСМЙЖХЪ.
б Perl МЕ ЯСЫЕЯРБСЕР РХОНБ "ЯРПНЙЮ" ХКХ "ВХЯКН" ХКХ "ТЮИК" ХКХ ВРН-РН ЕЫЕ. щРН ЙНМРЕЙЯРМН ГЮБХЯХЛШИ ОНКХЛНПТМШИ ЪГШЙ ДКЪ ПЮАНРШ Я РЕЙЯРЮЛХ.
яЙЮКЪП ХЛЕЕР КНЦХВЕЯЙНЕ ГМЮВЕМХЕ "TRUE" (ХЯРХМЮ), ЕЯКХ ЩРН МЕ МСКЕБЮЪ ЯРПНЙЮ ХКХ ВХЯКН МЕ ПЮБМНЕ 0.
б Perl ЯСЫЕЯРБСЕР ДБЮ РХОЮ МСКЕБШУ (null) ЯЙЮКЪПНБ - НОПЕДЕКЕММШЕ (defined) Х МЕНОПЕДЕКЕММШЕ (undefined). мЕНОПЕДЕКЕММНЕ ГМЮВЕМХЕ БНГБПЮЫЮЕРЯЪ, ЙНЦДЮ ВРН-РН МЕ ЯСЫЕЯРБСЕР. мЮОПХЛЕП, МЕХГБЕЯРМЮЪ ОЕПЕЛЕММЮЪ, ЙНМЕЖ ТЮИКЮ ХКХ НЬХАЙЮ. я ОНЛНЫЭЧ ТСМЙЖХХ defined() БШ ЛНФЕРЕ ГЮПЮМЕЕ НАМЮПСФХРЭ ОНДНАМНЕ ЯНЯРНЪМХЕ.
йНКХВЕЯРБН ЩКЕЛЕМРНБ ЛЮЯЯХБЮ РЮЙ ФЕ ЪБКЪЕРЯЪ ЯЙЮКЪПНЛ Х МЮВХМЮЕРЯЪ ЯХЛБНКЮЛХ $# ОНДНАМН ХМРЕПОПЕРЮРНПС csh. тЮЙРХВЕЯЙХ $#var1 - ЩРН ХМДЕЙЯ ОНЯКЕДМЕЦН ЩКЕЛЕМРЮ ЛЮЯЯХБЮ. мСФМН ОНЛМХРЭ, ВРН ОЕПБШИ ЩКЕЛЕМР ХЛЕЕР ХМДЕЙЯ 0, ОНЩРНЛС ЙНКХВЕЯРБН ЩКЕЛЕМРНБ НОПЕДЕКЪЕРЯЪ ЙЮЙ $#var1+1 . оПХЯБНЕМХЕ ГМЮВЕМХЪ $#var1 ХГЛЕМХР ДКХМС ЛЮЯЯХБЮ Х ПЮГПСЬХР "НЯРЮБКЕММШЕ" ГМЮВЕМХЪ. оПХЯБНЕМХЕ ГМЮВЕМХЪ ЩКЕЛЕМРС ЛЮЯЯХБЮ Я ХМДЕЙЯНЛ АНКЭЬЕ ВЕЛ $#var1 СБЕКХВХР ПЮГЛЕП ЛЮЯЯХБЮ, Ю ОПХЯБНЕМХЕ ЕЛС МСКЕБНЦН ЯОХЯЙЮ -НАМСКХР.
б ЯЙЮКЪПМНЛ ЙНМРЕЙЯРЕ ХЛЪ ЛЮЯЯХБЮ БНГБПЮЫЮЕР ЕЦН ДКХМС (ДКЪ ЯОХЯЙЮ БНГБПЮЫЮЕРЯЪ ОНЯКЕДМХИ ЩКЕЛЕМР).
оПХЛЕП:
@var1 = (4, 3, 2, 1); # оПХЯБНЕМХЕ ГМЮВЕМХЪ ЩКЕЛЕМРЮЛ ЛЮЯЯХБЮ $i = @var1; # хЯОНКЭГНБЮМХЕ ЯЙЮКЪПМНЦН ЙНМРЕЙЯРЮ print $i; # оЕВЮРЭ ПЕГСКЭРЮРЮ 4 - ЙНК-БН ЩКЕЛЕМРНБ print @var1; # яОХЯЙНБШИ ЙНМРЕЙЯР, ОЕВЮРЭ БЯЕУ ЩКЕЛЕМРНБ.
дКЪ ОПХМСДХРЕКЭМНЦН ОНКСВЕМХЪ ЯЙЮКЪПМНЦН ГМЮВЕМХЪ СДНАМН ОПХЛЕМЪРЭ ТСМЙЖХЧ scalar().
оПХЛЕП:
print scalar(@var1); # бШБНД ДКХМШ ЛЮЯЯХБЮ Ю МЕ ЕЦН ГМЮВЕМХИ
уЕЬ Б ЯЙЮКЪПМНЛ ЙНМРЕЙЯРЕ БНГБПЮЫЮЕР "true", ЕЯКХ ЯСЫЕЯРБСЕР УНРЪ АШ НДМЮ ОЮПЮ "ЙКЧВ-ГМЮВЕМХЕ". тЮЙРХВЕЯЙХ БНГБПЮЫЮЕРЯЪ ЯРПНЙЮ РХОЮ 2/8 ЦДЕ 8 - ЙНКХВЕЯРБН БШДЕКЕММШУ "ЪВЕЕЙ" ОЮЛЪРХ, Ю 2 - ЙНКХВЕЯРБН ХЯОНКЭГНБЮММШУ.
вХЯКЮ ОХЬСРЯЪ ЯРЮМДЮПРМН:
123 123.123 0.12 .12E-10 0xABCD # ьЕЯРМЮДЖЮРХПХВМЮЪ ГЮОХЯЭ 0377 # еЯКХ 0 Б МЮВЮКЕ - БНЯЭЛЕПХВМЮЪ 123_456_123 # рЮЙ РНФЕ ЛНФМН ДКЪ СДНАЯРБЮ ВРЕМХЪ.
яРПНЙХ НЦПЮМХВХБЮЧРЯЪ НДХМЮПМШЛХ (') ХКХ ДБНИМШЛХ (") ЙЮБШВЙЮЛХ:
'пЮБМЪИЯЭ, ЯЛХПМН!' "оНЯРПНХЛЯЪ Х ЯОЮЯЕЛЯЪ."
яОНЯНАНБ НАНГМЮВЕМХЪ ЯРПНЙ НВЕМЭ ЛМНЦН. яЛНРПХРЕ НОХЯЮМХЕ НОЕПЮРНПЮ qq.
б УЕЬЕ ЛНФМН НОСЯЙЮРЭ ЙЮБШВЙХ, ЕЯКХ ХМДЕЙЯ МЕ ЯНДЕПФХР ОПНАЕКНБ.
оПХЛЕП:
$var1{first} РН ФЕ ВРН Х $var1{'first'}
нАПЮРХРЕ БМХЛЮМХЕ МЮ РН, ВРН ОЕПЕД ОЕПБНИ НДХМЮПМНИ ЙЮБШВЙНИ ДНКФЕМ ЯРНЪРЭ ОПНАЕК, ХМЮВЕ ЯРПНЙЮ БНЯОПХЛЕРЯЪ ЙЮЙ ХЛЪ ОЕПЕЛЕММНИ, Р. Й. Б ХЛЕМЮУ ПЮГПЕЬЕМН ХЯОНКЭГНБЮМХЕ НДХМЮПМШУ ЙЮБШВЕЙ. гЮОПЕЫЮЕРЯЪ Б ЙЮБШВЙЮУ ОПХЛЕМЪРЭ ГЮПЕГЕПБХПНБЮММШЕ КХРЕПЮКШ __LINE__ (МНЛЕП РЕЙСЫЕИ ЯРПНЙХ ОПНЦПЮЛЛШ), __FILE__ (РЕЙСЫХИ ТЮИК). дКЪ НАНГМЮВЕМХЪ ЙНМЖЮ ОПНЦПЮЛЛШ ЛНФМН ОПХЛЕМЪРЭ КХРЕПЮК __END__ бЕЯЭ ОНЯКЕДСЧЫХИ РЕЙЯР ХЦМНПХПСЕРЯЪ, МН ЕЦН ЛНФМН ОПНВХРЮРЭ ХЯОНКЭГСЪ СЙЮГЮРЕКЭ ТЮИКЮ DATA.
яКНБЮ Б ОПНЦПЮЛЛЕ, МЕ ОНДДЮЧЫХЕЯЪ МХЙЮЙНИ ХМРЕПОПЕРЮЖХХ, БНЯОПХМХЛЮЧРЯЪ ЙЮЙ ЯРПНЙХ Б ЙЮБШВЙЮУ, ОНЩРНЛС ПЕЙНЛЕМДСЕРЯЪ ХЛЕМЮ ЛЕРНЙ Х СЙЮГЮРЕКЕИ ТЮИКНБ ОХЯЮРЭ АНКЭЬХЛХ АСЙБЮЛХ БН ХГАЕФЮМХЕ БНГЛНФМНЦН "ЙНМТКХЙРЮ" Я ГЮПЕГЕПБХПНБЮММШЛХ ЯКНБЮЛХ.
б Perl ЕЯРЭ БНГЛНФМНЯРЭ БЯРЮБКЪРЭ РЕЙЯР ДНЙСЛЕМРЮ ОПЪЛН Б ОПНЦПЮЛЛС. рЮЙ МЮГШБЮЕЛШИ "here-doc" (ГДЕЯЭ РЕЙЯР) ЛЕРНД. нАНГМЮВЮЕРЯЪ ЯХЛБНКЮЛХ << ГЮ ЙНРНПШЛХ ХДЕР ЯКНБН-НЦПЮМХВХРЕКЭ.
оПХЛЕП:
print <<EOF; # бЯЕ ЯРПНЙХ ДН EOF - РЕЙЯР ДКЪ ОЕВЮРХ. щИ БШ РПНЕ, ХДХРЕ ДБНЕ ЯЧДЮ! вРН ЯРНХЬЭ! ъ РЕАЕ ЦНБНПЧ!! оНКЙНБМХЙ яЮБНМЭЙХМ. EOF
яОХЯНЙ - ЛМНФЕЯРБН ГМЮВЕМХИ, ОЕПЕВХЯКЕММШУ ВЕПЕГ ГЮОЪРСЧ Х ГЮЙКЧВЕММШУ Б ЙПСЦКШЕ ЯЙНАЙХ. б ЯОХЯЙНБНЛ ЙНМРЕЙЯРЕ ЯОХЯНЙ БНГБПЮЫЮЕР ОНЯКЕДМХИ ЩКЕЛЕМР ЯОХЯЙЮ.
оПХЛЕП:
@var1 = (1, 2, 'ОПХБЕР', 1.2); # оПХЯБНХРЭ ГМЮВЕМХЕ ЩКЕЛЕМРЮЛ.
ЦДЕ
$var1[0] = 1, $var1[1] = 2, $var1[2] = 'ОПХБЕР' $var1[3] = 1.2 $var1 = (1, 2, 'ОПХБЕР', 1.2);
Ю ГДЕЯЭ $var1 = 1.2 Р.Е. ОНЯКЕДМЕЕ ГМЮВЕМХЕ ЯОХЯЙЮ.
дНОСЯЙЮЕРЯЪ ОПХЛЕМЪРЭ Б ЯОХЯЙЕ ДПСЦХЕ ЯОХЯЙХ, МН Б ОНКСВЕММНЛ ЯОХЯЙЕ СФЕ МЕБНГЛНФМН ПЮГКХВХРЭ МЮВЮКН Х ЙНМЕЖ БЙКЧВЕММШУ ЯОХЯЙНБ.
оПХЛЕП:
@s1 = (1, 2, 3); # оЕПБШИ ЯОХЯНЙ @s2 = (6, 7, 8); # бРНПНИ @s = (0, @s1, 4, 5, @s2, 9, 10); # бЙКЧВЮЕЛ ЯОХЯЙХ @s1 Х @s2 print @s; # пЕГСКЭРЮР: 012345678910 - ГМЮВЕМХЪ АЕГ ОПНАЕКНБ.
яОХЯНЙ АЕГ ЩКЕЛЕМРНБ НАНГМЮВЮЕРЯЪ ЙЮЙ () Х МЮГШБЮЕРЯЪ МСКЭ-ЯОХЯЙНЛ. яОХЯЙНБНЕ БШПЮФЕМХЕ ЛНФМН СОНРПЕАКЪРЭ ЙЮЙ ХЛЪ ЛЮЯЯХБЮ, МН ОПХ ЩРНЛ ЕЦН МСФМН АПЮРЭ Б ЙПСЦКШЕ ЯЙНАЙХ.
оПХЛЕП:
print ('ЪМБЮПЭ','ТЕБПЮКЭ','ЛЮПР')[1];
пЕГСКЭРЮР: ТЕБПЮКЭ
яОХЯНЙ ЛНФЕР АШРЭ ОПХЯБНЕМ ЯОХЯЙС РНКЭЙН ЕЯКХ ЙЮФДШИ ЩКЕЛЕМР Б ЯОХЯЙЕ Б КЕБНИ ВЮЯРХ БШПЮФЕМХЪ ДНОСЯРХЛ ОН РХОС ЯОХЯЙС Б ОПЮБНИ ВЮЯРХ.
оПХЛЕП:
($a, $b, $c) = (1, 2, 3); # $a = 1, $b = 2, $c = 3
оПХЯБЮХБЮМХЕ ЯОХЯЙНБ Б ЯЙЮКЪПМНЛ ЙНМРЕЙЯРЕ БНГБПЮЫЮЕР ЙНКХВЕЯРБН ОПХЯБНЕММШУ ЩКЕЛЕМРНБ.
оПХЛЕП:
$x = (($a, $b, $c) = (1,2)); # пЕГСКЭРЮР $x=2
б ЯКСВЮЕ ОПХЯБЮХБЮМХЪ ЯОХЯЙЮ УЕЬС, ЯОХЯНЙ ПЮЯЯЛЮРПХБЮЕРЯЪ ЙЮЙ ОЮПШ: ЙКЧВ-ГМЮВЕМХЕ.
оПХЛЕП:
%ДМХ_ЛЕЯЪЖЮ = ('ЪМБЮПЭ', 31, 'ТЕБПЮКЭ', 30);
пЕГСКЭРЮР: $ДМХ_ЛЕЯЪЖЮ{ЪМБЮПЭ} = 31, $ДМХ_ЛЕЯЪЖЮ{ТЕБПЮКЭ} = 30
дКЪ СДНАЯРБЮ ГЮОХЯХ ЛНФМН ХЯОНКЭГНБЮРЭ БШПЮФЕМХЕ Я => .
оПХЛЕП:
%ДМХ_ЛЕЯЪЖЮ = ( ЪМБЮПЭ => 31, ТЕБПЮКЭ => 30, );
б Perl ХЯОНКЭГСЕРЯЪ ЯОЕЖХЮКЭМШИ БМСРПЕММХИ РХО typeglog ДКЪ ГЮОХЯХ ЛЮЯЯХБЮ БЯЕУ ОЕПЕЛЕММШУ. рЮЙХЕ ЛЮЯЯХБШ МЮВХМЮЧРЯЪ Я ЯХЛБНКЮ '*'. хУ СДНАМН ОПХЛЕМЪРЭ ДКЪ ОЕПЕДЮВХ ЯЯШКНЙ МЮ ЛЮЯЯХБШ Х УЕЬХ, МН Б ДЮММНИ БЕПЯХХ Perl СФЕ ЕЯРЭ БНГЛНФМНЯРЭ ОПХЛЕМЪРЭ ЯЯШКЙХ, ОНЩРНЛС ЩРН ДЕКЮЕРЯЪ НВЕМЭ ПЕДЙН. еДХМЯРБЕММН ЦДЕ ЩРН МЕНАУНДХЛН, РЮЙ ЩРН ДКЪ ПЮАНРШ ЯН ЯЯШКЙЮЛХ МЮ ТЮИКШ. мЮОПХЛЕП, ЕЯКХ БЮЛ МСФМН ЯНГДЮРЭ КНЙЮКЭМСЧ ЯЯШКЙС МЮ ТЮИК Б ОПНЖЕДСПЕ, РН ЩРН КСВЬЕ ЯДЕКЮРЭ РЮЙ:
sub new_sub { local *IN; # яЯШКЙЮ МЮ ТЮИК open (IN, "test") || return undef; # нРЙПШРЭ ТЮИК. бНГБПЮР ОПХ НЬХАЙЕ. ......... return; }
аНКЕЕ ОНДПНАМН ЩРН НОХЯЮМН Б ЦКЮБЕ яЯШКЙХ.
[мЮГЮД] [яНДЕПФЮМХЕ] [бОЕПЕД]