���������� �����, ������� �� �� ������������ �� �������, ���� ��� ����� ������ ����� ��������� ������� ��� ����� �������� �������������. ������ ���������� �������� �������� �������������� ����������. ���������� ����� ������� � �� ������� ��� ��� �����, ������� ����������� �����, � ������ ���� �� ��������. �� ���������� ����������� ����������� � ����� Programming Perl, �� man-�������� perl(l) � perlfaq(l), � HTML-����������, ��������� � �������� doc ������ CPAN, � � ���������� ��������������� Usenet. ������ ������������� �������������� ��, Perl ����� ������� ������������ ������ � �������� ����. ����� ��������� ������ TCP/IP, ������� �� ������������� � ���������� �, Perl ������������ ����� (���� ���� ������� ������ � �����) �������� ����� UNIX, �������� ��������� �� ��������� UDP, ��������� ������������ ������, ��������, ����������� � ������������� ������ � ��������� ��������. ����������� ������ ����������� � ����� 6 ����� Programming Perl � �� man-�������� perlipc(l), � ������ ���������� ������� ���� � � ������� �������� ������� CPAN, ����������� �����. ��, �� ������ Perl ����� ������������ ������� ����� � �������������� ������ TCP/IP, �������� ������ UNIX � ���������� ������ ��������� ������������ ������ � ��������� � ��������, ������� ������������ ��� �����������. ���������� �������� ��. �� man-�������� perlipc(l). �������� � Perl ���� �������� ��������, ���������� �� ������ ��������� ����. � ��� �������������� �� man-�������� perldebug(l). ��������� ������ ��� ������� �������������� Perl ����� ��������� ��������� ������ ��������� ������. ��. man-�������� perlrun(\'). ������ �������� ������ ���������� � �����, ������������ � ������ ��������. ��������, �������� "�������". ���� ����� �������� ��������������� ������ &, I, � � ~, ����������� �������� ?\ :, �������� . . � ... � ������. ������� ����� �������� ��������, ��������, ����������� ������������� ������������ � � �������� �������������. �� ���� � ������ ������ �������������� �� man-�������� perlop(l). ������ ������� � Perl ����� ����� �������. �� �� ���������� ����� �� ��� �����������, ������ ��� ����� ������� ������ ������ � ��� � ��� ��������� ������ � �������� � ����� Programming Perl � man-�������� perlfunc(l). ��� ��������� �� �������� ���������� �������. ������� grep � ��� ������� grep �������� �������� �� ������ ���������� �� ��������� ���������� ���������, ������� ����������� ����������� �� ����������, ��� ���� ���������� $_ ��������������� ��������������� ������ ������� �������� ������: @bigpowers = grep $_ > 6, 1, 2, 4, 8, 16; # �������� (8, 16) @b_names = grep /^�/, qw(fred barney betty wilma) ; Stextfiles = grep -T, <*>; ������� map ������ �� grep, �� ������ ������ � ���������� ��������� �� ������ ���������� ��� ������ ������ ���������� ���������� ��������� (������������ � ��������� ���������): @more = map $_ + 3, 3, 5, 7; # �������� 6, 8, 10 @square s == map $_ * $_, 1. .10; # �������� ������ 10 ����� @that = map "$_\n", Sthis; # ��� unchop Ctriangle - map !..$_, 1..5; # 1,1,2,1,2,3,1,2,3,4,1,2,3,4,5 %sizes = map ( $_, -s ) <*>; # ��� ������ � �������� �������� eval (� s///e) ��, �� ������ ������� �������� ���� �� ����� ������ ��������� � ��������� ��� ��� ������ ������� eval ����� ��� ��, ��� � shell. ��� ��-���������� �������� �����������, ��������� ������� ����� ��������� ����������� ������� ���������� (��������, �������� ��������������� ���������� ���������) �� ����� ����������. � �� ������� ����� ����� ����������� �� ��������� ���� ������, ������� � ��������� ������ ����� ����������: ��������� ������ ������ eval ������ �������� � ������ �� ���� ������� � ������ ������������ ��� ������. ���, ��������, ���������, ������� ������ ������ Perl-����, �������� �������������, � ����� ��������� �� ���, ��� ����� ��� ����� Perl-���������: print "code line: "; choptScode = <STDIN� ; eval $code; die "eval: $@" if $@; Perl-��� ����� �������� � ���������� ������ ��� ���������� �������� ������ � ������� ����� �. ��� ������, ���� �� ������ �������� � ���������� ������ ����� �������, ��������, ����� ������������, ������� ���������� �� ���������� ������ � ���� ������. ��� ����, ������� �������������� �������� ������ ������� ��� ���� �����: while (�) ( s/" (\S+)/$l+l/e; f $1+1 is Perl code, not a string printf; } ������� evai ������������ ����� ��� �������� ��������� ����������: eval { some_hairy_routine_that_might_die(Oargs); }; if ($0) ( print "oops... some_hairy died with $@"; 1 ����� ������ $@ ���� �� ��� ���, ���� ���� eval �������� ���������, � � ��������� ������ ���� ���� ������ "��������� � ������". �� ���� ���� ����������� (eval "������", eval { ���� } � s///e) ������ ������ ������������� ������������� ����� �������������� �� eval �� shell. ��������� ��� ������������� "�� ����", ��� ������ �� ����� �������������� �������� ������������������. ���������������� ���������� �� ��� ������� � ����������� ����������������� �����������, ��������, � ���������� $_. �� ������� ������. � ���� �� ����������� ��������� ����� ��� ����� ����������. ����� ��� ������� man-�������� perlvar(\), � ����� ������ English �� �������� perlmod(Y). ��������� ������� �������� � ������� *FRED �� ������ ������� b ����������� ��� � � ������� �������� *� = *�. ��� ������, ��� $� � $� ���������� ���� � �� �� ����������, ����� ��� @� � @�, � ���� ����������� ������ � ������� � � b. �� ������ ����� �������� *� ��������� ��� ������� ����� � ������� �������� local (*b), ��� �������� ��� ����� ��������� ����������� ������, ������� � ������ ����. ��� ������ ��������������, �� ������ ������ ������ �������. �������������� ����������� ���������� ��������� ���������� ��������� ����� ����� "�����������" ��������� (� ������� ���������� ������� �� �����������, ������� ���������� ��������� ����� ����������� �� ��������� ����� � ��������� ������� Perl-�����������), � ����� ����� ������������� � ������������� "����������". ���� ��������� ������� ��������� ���������, �� �� ��������� � ���������� � ����� Programming Perl ��� man-�������� perlre(l). ��� ��� � ������ ������ ������������ � ����� ������ (Friedl) Mastering Regular Expressions (������������ O'Reilly & Associates). ������ ���� ��� ����� �������� �������� ����� ����� ��� ���� �� � ������� ��������, �� ������ ������� ������������ ���� ���������� � ������� �������. ����� � ��� ������ ������� �������, ������� �������� ����� ������� ����������� ���������� (����� ���, ������� ��������� ��������� ��). ������� ���� �������, �� ��������� ������ ����������. ��� ��������� ������: $� = 123; # ��� �� ����� ���� $main::a $main::a++; # �� �� ����������, ������ 124 package fred; t ������ ������� � fred $� = 456; # ��� $fred::a print $a - $roain::a; t ������� 456-124 package main; t ������� � ��������������� �������� �� ��������� print $� + $fred::a; t ������� 124+456 ����� �������, ����� ��� � ����� ������ ������ ������������ ��� ����, � ��� ��������� ����� ��������� �������������� �������� ������, ������� ������ �� ���������. ������ �������� ��� �������� ����� ��� �����, � �� ������ ������ ������������ ����� main � ������ �����. ����������� ��. �� man-�������� perlsub(\). �������������� � ������������� "������������" Perl ���������� ���������� ������ ��� ����, ����� ����������� �����������-�������������� Perl � ������ ���������� (���, ��� ��� ��� ������� � Web-�������� Apache � ��������� ���������� vi) ��� ���������� Perl ����� ���������� � ���� ������������� ����, ����������� �� � (��� �������� �-�������� ���������), ����� ������������ ��������� �������. ����� ����, ����� ������ ����� ���������� ������������ �� Perl ��������� ������ �������� ����������� � ���������� ����� �����. �������� ��� ������� �������� �� man-��������� perlembed(l), perlapio(l), perlxs( 1), perlxstut( 1), perlguts( 1) � perlcall( 1). ��������� Perl ����� �������� ���������, �� ������ �������� ����������� ��������� �������� ����������� ������, ��������� ���������� Perl ��� ���������� ��������� � �� ������� � �� ����� �� ����� �� ��� ��� ����. ���������. ������� ������������ Perl ���������� � ������ ���������� ������������. ���������� � ����� 6 ����� Programming Perl ��� �� man-�������� perlsec(l) �������� � "�������� �������" (taint checking). "�������� �������" � ��� ����� ��� ������, ����� �� ��������� ������ ���������, � �� ����, ������� �� ��������� � ��� ��� ����� ������ � UNIX � �����������, � ������� ����������� ������������� ������������, � �� ���� �������� � �����������, ������������ ��������. ������ Safe, ������� ������ �� man-�������� Safe(3) � � ����� 7 ����� Programming Perl, ������������ ����� ���������� ���� � ������, ����������� ��� ���������� (��� � ������ � eval) �������������� ����. ��������� swithch � case ���, ����� ���������� � Perl ���, �� �� ����� ������� � ������� ������� �����������. ��. ����� 2 ����� Programming ���1� man-�������� perlfunc(\).
������ ����-�����: sysopen, sysread, syswrite, sysseek ������ �������� �����-������ Perl ����������� ������� ���������������� ��� ������� ����� ���� ������. � ����� 3 ����� Programming Perl � �� man-�������� perlfunc(l) ��������������� ������ ����������������� ������������� ������� ��������� ������� ��� �����-������. ���������� Perl ���� �� �������, ��� Perl ����������� ��� ��� ����� ���, ��� ��� ���������, ��� ���������������� ����� �� �������� "������" ��������� �����. ���������� Perl, ���������� ����������� ����, ����� ������� �� ������ Perl-�������� ����������� �������� ��� ��� ������������� �-���. ���������, ��� � ������ Perl 5.005 ����� �������� ����������� ��������� ������������ ����. ����������� ��. � ���������, �������������� �� man-�������� perlfaq(3). ��������� ��� ������ ��, Perl ����� ���������� ���������������� �������������� � ������������� ��������� ��� ������, ������� Oracle, Sybase, Informix � ODBC, �� ������ ������ ������. ��������������� ������ ���������� �� ������� � ������� ��� ������ � �������� ������� CPAN. ������� ��������� ������ ��������� ������, �� ������ ��������� ��������� ������ ������������ ������� ���������. ������� �� ���������� ��������������� � ����� 4 ����� Programming Perl � �� man-��������� perllol(l), perldsc(l) � perlref(l). ���� �� ������������� ��������-��������������� ��������� ������, ���������� � ����� 5 �������������� ����� � man-��������� perltoot(\) � perlobj(l). ��������� �� ������� Perl ����� ��������� � ���������� ��������� �� ������� ����������� ������ ���� \&funcname, � ����� �������� �� �������� ����������� ������ &$funcptr ($args). ����� ���� ������ �������, ������� ������� � ���������� ����� ��������� �������, ��� � ������ Lisp � Scheme. ����� ��������� ������� ����� �������� ����������� (closures). ����������� ��. � ����� 2 ����� Programming Perl � �� man-��������� perlsub(l) � perlfaq7(l). � ������ Perl � ������ ���� ���������� ��� ����� ������ � ��������, ������� ����������� ���������� ����������� ��� ������������ � �������� ������� ������. (��� �����, ����� ����, � ��� ��������� ���� ����� �� ������ ��������� ��� ����� ������ Visual Perl?) � ����� ������ � �������, �����!
|