оНДОПНЦПЮЛЛШ.

дКЪ ОПХЛЕМЕМХЪ ОНДОПНЦПЮЛЛШ ЕЕ МЕНАУНДХЛН НОПЕДЕКХРЭ КХАН Б РЕЙСЫЕЛ ЛНДСКЕ (ТЮИКЕ), КХАН БН БМЕЬМЕЛ ЛНДСКЕ (ТЮИКЕ). оНДОПНЦПЮЛЛШ НОПЕДЕКЪЧРЯЪ Х ДЕЙКЮПХПСЧРЯЪ ЯКЕДСЧЫХЛ НАПЮГНЛ:

дКЪ НОПЕДЕКЕМХЪ ДХМЮЛХВЕЯЙНИ ЮМНМХЛМНИ ОНДОПНЦПЮЛЛШ ЛНФМН СЙЮГЮРЭ:

дКЪ ХЛОНПРХПНБЮМХЪ ОНДОПНЦПЮЛЛ ХГ ДПСЦХУ ЛНДСКЕИ ХЯОНКЭГСИРЕ:

бШГНБ ОНДОПНЦПЮЛЛШ:

     ХЛЪ(ЯОХЯНЙ ОЮПЮЛЕРПНБ); # ЯХЛБНК '&' ЛНФМН МЕ СЙЮГШБЮРЭ.
     ХЛЪ ЯОХЯНЙ;             # еЯКХ ОНДОПНЦПЮЛЛЮ СФЕ ДЕЙКЮПХПНБЮМЮ.
     &ХЛЪ;                   # оЮПЮЛЕРПШ Б @_

бЯЕ ОЮПЮЛЕРПШ ОЕПЕДЮЧРЯЪ ОНДОПНЦПЮЛЛЕ ЙЮЙ ЛЮЯЯХБ @_. яННРБЕРЯРБЕММН $_[0] - ОЕПБШИ ОЮПЮЛЕРП, $_[1] - БРНПНИ Х Р.Д. лЮЯЯХБ @_ - КНЙЮКЭМШИ, МН НМ ЯНДЕПФХР ЮДПЕЯЮ ОЮПЮЛЕРПНБ, ОНЩРНЛС ЛНФМН ХГЛЕМЪРЭ ГМЮВЕМХЕ ОЮПЮЛЕРПНБ. бНГБПЮЫЮЕЛНЕ ГМЮВЕМХЕ ОНДОПНЦПЮЛЛШ - ПЕГСКЭРЮР ОНЯКЕДМЕЦН НОЕПЮРНПЮ. щРН ЛНФЕР АШРЭ ЙЮЙ ЯЙЮКЪП РЮЙ Х ЛЮЯЯХБ. лНФМН ОПХМСДХРЕКЭМН БНГБПЮЫЮРЭ ПЕГСКЭРЮР ХЯОНКЭГСЪ ТСМЙЖХЧ return().

оНДОПНЦПЮЛЛС ЛНФМН БШГБЮРЭ, ХЯОНКЭГСЪ ОПЕТХЙЯ '&' ОЕПЕД ХЛЕМЕЛ ОНДОПНЦПЮЛЛШ. еЯКХ ОНДОПНЦПЮЛЛЮ ОПЕДБЮПХРЕКЭМН ОПНДЕЙКЮПХПНБЮМЮ, РН ОПЕТХЙЯ Х ЯЙНАЙХ ЛНФМН НОСЯРХРЭ.

Private ОЕПЕЛЕММШЕ.

дКЪ ОПХЛЕМЕМХЪ ОЕПЕЛЕММШУ ДНЯРСОМШУ РНКЭЙН БМСРПХ АКНЙЮ ХКХ ОНДОПНЦПЮЛЛШ МЕНАУНДХЛН НОПЕДЕКХРЭ ХУ Я ОНЛНЫЭЧ ТСМЙЖХХ my(ЯОХЯНЙ).
еЯКХ ОЕПЕЛЕММЮЪ НДМЮ, РН ЯЙНАЙХ ЛНФМН НОСЯРХРЭ.

my() ДЕЙКЮПХПСЕР private ОЕПЕЛЕММШЕ Б ОПЕДЕКЮУ РЕЙСЫЕИ ОНДОПНЦПЮЛЛШ, АКНЙЮ, ТСМЙЖХХ eval() ХКХ do/require/use ТЮИКНБ. Private ОЕПЕЛЕММШЕ ЮМЮКНЦХВМШ auto ОЕПЕЛЕММШЛ Б я.

оПХЛЕП:

	# оПНЦПЮЛЛЮ БШВХЯКЕМХЪ ТЮЙРНПХЮКЮ.

	print fact(3);  # БШВХЯКХРЭ ТЮЙРНПХЮК 3*2*1

	sub fact	# нОПЕДЕКЪЕЛ ОНДОПНЦПЮЛЛС.
	{ my $m;                # private ОЕПЕЛЕММЮЪ МН МЕ local !
	$m = $_[0];
	return 1 if $m <= 1; return($m * fact($m 1)); } 

лНФМН СЙЮГШБЮРЭ МЮВЮКЭМШЕ ГМЮВЕМХЪ private ОЕПЕЛЕММШУ ЙЮЙ:

рЮЙ ДКЪ БШЬЕОПХБЕДЕММНЦН ОПХЛЕПЮ КСВЬЕ АШКН МЮОХЯЮРЭ:

оЕПЕЛЕММШЕ РХОЮ local.

б НАЫЕЛ КСВЬЕ ХЯОНКЭГНБЮРЭ private ОЕПЕЛЕММШЕ, Р. Й. ЩРН МЮДЕФМЕИ Х АШЯРПЕЕ. private ОЕПЕЛЕММШЕ НАЕЯОЕВХБЮЧР КЕЙЯХВЕЯЙСЧ НАКЮЯРЭ ОПХЛЕМЕМХЪ (БХДХЛНЯРХ), Ю local - ДХМЮЛХВЕЯЙСЧ. нАШВМН ЩРН ОЕПЕЛЕММШЕ ТНПЛЮРНБ, ГМЮВЕМХЕ ЙНРНПШУ ДНКФМН АШРЭ БХДХЛН ХГ БШГШБЮЕЛШУ ОНДОПНЦПЮЛЛ. оПХЛЕМЕМХЕ ТСМЙЖХХ local() МЕЖЕКЕЯННАПЮГМН Б ЖХЙКЮУ, РЮЙ ЙЮЙ НМЮ БШГШБЮЕРЯЪ ЙЮФДШИ ПЮГ Х РЮЙХЛ НАПЮГНЛ ГЮЛЕРМН СБЕКХВХБЮЕР БПЕЛЪ БШОНКМЕМХЪ ЖХЙКЮ.

оПНРНРХОШ (prototypes).

дКЪ ЙПЮРЙНЦН НОХЯЮМХЪ РХОЮ ОЕПЕДЮБЮЕЛШУ ОНДОПНЦПЮЛЛЕ ОЮПЮЛЕРПНБ ЛНФМН ОПХЛЕМЪРЭ ОПНРНРХОШ. б Perl ЯСЫЕЯРБСЧР ЯКЕДСЧЫХЕ ОПНРНРХОШ:

дЕЙКЮПЮЖХЪ оПХЛЕП БШГНБЮ
sub mylink($$) mylink $old, $new
sub myvec($$$) myvec $var, $offset, 1
sub myindex($$;$) myindex &getstring, "substr"
sub myreverse(@) myreverse $a, $b, $c
sub myjoin($@) myjoin ":",$a,$b,$c
sub mypop(\@) mypop @array
sub mysplice(\@$$@) mysplice @array, @array, 0, @pushme
sub mykeys(\%) mykeys %{$hashref}
sub myopen(*;$) myopen HANDLE, $name
sub mypipe(**) mypipe READHANDLE, WRITEHANDLE
sub mygrep(&@) mygrep { /foo/ } $a, $b, $c
sub myrand($) myrand 42
sub mytime() mytime
гДЕЯЭ:

яЯШКЙЮ ЙЮЙ ОЮПЮЛЕРП.

хМНЦДЮ МСФМН Б ЙЮВЕЯРБЕ ОЮПЮЛЕРПЮ ОЕПЕДЮРЭ ОНДОПНЦПЮЛЛЕ МЕ ГМЮВЕМХЕ ЩКЕЛЕМРЮ ЛЮЯЯХБЮ, Ю ЯЯШКЙС МЮ МЕЦН, ВРНАШ ОНДОПНЦПЮЛЛЮ ЛНЦКЮ ХГЛЕМХРЭ ГМЮВЕМХЕ ЩКЕЛЕМРЮ. дКЪ ЩРНЦН Б Perl Й ХЛЕМХ ОЕПЕЛЕММНИ ДНАЮБКЪЕРЯЪ ЯХЛБНК '*' оНДНАМНЕ БШПЮФЕМХЕ МЮГШБЮЧР 'type glob' РЮЙ ФЕ ЙЮЙ Б Unix ЯХЛБНКНЛ '*' НАНГМЮВЮЧР "БЯЕ БНГЛНФМШЕ ГМЮВЕМХЪ". оНЩРНЛС '*' ДКЪ ЛЮЯЯХБЮ НГМЮВЮЕР "БЯЕ ЩКЕЛЕМРШ ЛЮЯЯХБЮ". дКЪ ЯЙЮКЪПНБ СОНРПЕАКЪРЭ '*' МЕ ХЛЕЕР ЯЛШЯКЮ, Р.Й. НМХ Х РЮЙ ОЕПЕДЮЧРЯЪ ЯЯШКЙНИ Х БШ ЛНФЕРЕ ХГЛЕМЪРЭ ГМЮВЕМХЕ ОЮПЮЛЕРПЮ, ХГЛЕМЪЪ, МЮОПХЛЕП, ОЕПЕЛЕММСЧ $_[0].

оЕПЕНОПЕДЕКЕМХЕ БЯРПНЕММШУ ТСМЙЖХИ.

аНКЭЬХМЯРБН БЯРПНЕММШУ ТСМЙЖХИ Perl ЛНФМН ОЕПЕНОПЕДЕКХРЭ ЯБНХЛХ ЯНАЯРБЕММШЛХ. нАШВМН ЩРН ДЕКЮЧР ДКЪ СДНАЯРБЮ ЯНБЛЕЯРХЛНЯРХ Perl ДКЪ ПЮГМШУ ОКЮРТНПЛ ЯХЯРЕЛ.
дКЪ ЩРНЦН МСФМН ОЕПЕВХЯКХРЭ ХЛЕМЮ ЩРХУ ТСМЙЖХИ Б БХДЕ:

Х ДЮКЕЕ Б ЛНДСКЕ НОПЕДЕКХРЭ ЯЮЛХ ТСМЙЖХХ.

юБРНГЮЦПСГЙЮ.

еЯКХ БШ ОНОШРЮЕРЕЯЭ БШГБЮРЭ МЕЯСЫЕЯРБСЧЫСЧ ТСМЙЖХЧ, РН Perl МЕЛЕДКЕММН БШДЮЯР ЯННАЫЕМХЕ НА НЬХАЙЕ. мН ЕЯКХ БШ НОПЕДЕКХРЕ ОНДОПНЦПЮЛЛС Я ХЛЕМЕЛ 'AUTOLOAD', РН НМЮ АСДЕР БШГБЮМЮ Я РЕЛХ ФЕ ОЮПЮЛЕРПЮЛХ, Ю ОЕПЕЛЕММЮЪ $AUTOLOAD АСДЕР ЯНДЕПФЮРЭ ХЛЪ МЕЯСЫЕЯРБСЧЫЕИ ОНДОПНЦПЮЛЛШ. дЮММШИ ЛЕУЮМХГЛ НВЕМЭ СДНАЕМ ДКЪ ЯПЕДЯРБ НРКЮДЙХ.

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