����� 10� ���� �����:
�������� next �������� redo ����� ������������ ��������� �������� && � || ��� ����������� ��������� ���������� ����������� ����������������� last �������� ��������� �� ���������� ����������, ��, ��������, ������ ������: "���� �� � ���� ������������ ��� �-�������� break, ��� ���� �� ���������". ���� ���� ����� ����� � �� ��������� ��� � ������ � ��� ����� ��������� ��� ���������� � Perl-��������� ��� ���������������� ������ �� ����� last. �������� last ������������ ����� �� ������ ����������� ����� �����, � ������� ���������� ���� ��������*, ��������� ���������� ���������, ���������� ��������������� �� ���� ������. ��������: while (���-��) ( ���-��; ���-��! ���-��; if (�������) { ���-�� ��� ������; ���-�� ��� ������; last; # ����� �� ����� while } ��� ���-��/ ��� ���-��; } # last �������� ���������� � ��� ����� ��������� * ����������� ���� do (} while/until � ����� ������ ���������� next, last � redo ������ �� ���������.
���� ������� �������, �� ����������� ������ ���-��_���_������, ����� ���� �������� last ��������� ���� while. �������� last ��������� ������ �����, ���������� ����, � �� �����, ����������� ��� ���������� ������������ �������������� �����������. ��� ������, ��� ����� ��� ���������� if � else, ����� ��� � ��� ����������� do {} while/until, "�� ���������"; ����������� ������ �����, ������� �������� ����� for, foreach, while, until � "�����" �����. ("�����" ���� � ��� ����, �� ���������� ������ ����� ������� �����������, �������� �����, ������������, ��������� if/then/else.) ��������, �� ����� ����������, ���� �� �������� ���������, ����������� � �����, ������� ������������� merlyn. ����� ��������� ����� ��������� ��������� �������: From: merlyn@stonehenge.com (Randal L. Schwartz) To: stevet@ora.com Date: Ol-DEC-96 08:16:24 PM -0700 Subject: A sample mail message Here's the body of the mail message. And here is some more. ��� ����� ���� �� ����� � ���� ��������� ������, ������� ���������� ������ From:, � ����� ����������, �� �������� �� ��� ������ ��������������� ��� merlyn. ��� ����� ���� �� ������� ���: while (<STDIN>) ( # ������ ������� ������ if (/^From: /) ( # ���������� �� ������ �� ����� From:? ���� ��... if (/merlyn/) ( # �� ��������� �� merlyn! print "Email from Randal! It's about time!\n"; } last; # ������ ������ ������ From: �� �����, ������� ����� } # ����� ����� "if from:" if (/^5/) ( # ������ ������? last; # ���� ��, ������ ������ �� ��������� > } # ����� ����� while ����� ������, ������� ���������� �� ����� From:, �� ������� �� �����, ������ ��� ����� ������ ������ ������ ����� ������. ����� ����, ��������� ��������� ��������� ��������� ������������� �� ������ ������ ������, �� ����� ����� � �� ��������� �����. �������� next ��� � last, �������� next �������� ������������������ ���������� ���������. ������� ����� ���� ������� � ���, ��� next ���������� ��������� ���������� ���������� ����� ������ ����������� ����� �����, �� �������� ���� ����*. ������������ �������� next ��������� �������: while (���-��) ( ������_�����; ������_ �����; ������_�����; if (�������) { �����-�� �����; �����-��_����� next; ) ������_�����; ������_ ����� ; # next �������� ���������� � ��� ����� ��������� ) ���� ������� �������, �� ����������� �����-��_�����, � ������_����� ������������. ��� � ��� ������������� ��������� last, ���� ��������� if �� ��������� ������, ���������� ����. �������� redo ������ ������ �������� ���������� � ����� ����� � �������� redo. ��� ����������� ������������ ������� � ������ �������� ����� (��� ���������� ���������� ������������ ���������): while (�������) { # redo �������� ���������� � ��� ����� ��������� ���-��; ���-��; ���-��; if {�������) { �����-�� ��������; �����-�� ��������; redo; ���_���-��; ���_���-��; ��� ���-��; } * ���� � ������ ����� ���� �������� continue, ������� �� �� �������������, next ��������� � ������ ����� continue, � �� � ����� ����� �����. ��� ����������� ���� � �� ��. ���� if ����� ���� �� �����������; ��������� ������ ��������������� �����. ��������� ���������� redo, ���������� last � "�����" ������, ����� ��������� ����������� ����, ������������ ������ �����: ( -...,. . ���������_��������; ���������_��������; �� ����1��_��������; if (�������) ( last; } ����������1�_��������; ��������1���_��������; �����������_��������; redo; } ����� ����� ������� ��� while-��������� �����, ��������� ����� �������� ������ ����������� ��� ����������������� ����� ������ ���������. (� ������� "������������ ���������" �� �������, ��� ����� ������������ �������� if � ������� ������ ������ ����������.) ����� ��� ������, ���� �� ������ ����� �� �����, � ������� ���������� ����� ���������� ����, ����� �������, ����� ����� �� ���� ��������� ������? � � �� ����� �� ���������� � ������������� ����� ��������� goto. � Perl ����� �������� �� ����� � ����� �� ��������� � ������ ������������� ����� ����� ������������ ��������� last, next � redo, �������� ����� ����� ��� � ������� �����. ����� � ��� ��� ���� ��� ����� �� ��� ������ ������������ ����, ����������� ��� �� ��������, ��� � ����� ��������, ��������, ����� � �����������. �� ������, ������, ��� � ����� ��� ������������ ����������� ������� (������������ $ � ��������, ������� & � ������������� � �.�.), ������� ����� print, � �������, ������������� �� � ����������������� ������ print, � ���� ���� �� ������������� �� �����������. �� ���� ������� ����� ��������� ����� � �������, ���������� ������ �� ��������� ���� � ����, ������� � ������� ������� �� ����� �������������� � ����������������� ������. ����� ����, ��������� ����� � ����� ������ ���������� � ������ ���������, ������� ���������� � �������� � �������������� ������� ��������. ������ ��� �����, ������� ��� ����� ����� ����������, ���������� ����, � ��������� ���������: �����: while (�������) { ��������; ��������; ��������; if (������_�������) { last �����; } ) �� ������� ����� ��� �������� � ��������� last. ��� ���� ����� Perl �������� ����� �� ����� � ������ �����, � �� ������ �� ������ ����������� �����. � ������ ������, ������, � ��� ���� ������ ���� ����������� ����. ������� ���������� ������� �� ���������� �������: OUTER: for ($i=l; $i <= 10; $i++) { INNER: for ($j=l; $j <= 10; $j++) ( if ($i * $j == 63) ( print "$i times $j is 63!\n"; last OUTER; } if ($j>=$i) ( next OUTER; } } } ���� ����� ���������� ��������� ���������� ��� ���������� ������������ ��������� ����� �� ��� ���, ���� �� ����� ������� ����, ������������ ������� ����� 63 (7 � 9). ����� ���� ��� ��� ���� ����� �������, �������� ��������� ����� ������ �����, ������� ������ �������� if ������������ ����� �� ����� ������ for, ��������� ��� ����� �������� last � ������. ������ �������� if �����������, ��� ������� �� ���� ����� ������ ����� ������, �������� � ��������� �������� �������� �����, ��� ������ ������������ ������� ���������� ���� ��������. ��� ������, ��� ����� ����� ����������� ��� ��������� ���������� ($i,$j) = (1,1), (2,1), (2,2), (3,1), (3,2), (3,3), (4,1) ��.�. ���� ���� ����� ���������� ���� ����� �����, �������� ���������� last, next � redo ��� ��������������� ��������� (�����) ��� ����� ���������������� �� ����. ����� ����, � ������� ����� ������ ���������� � ���� � ����� ������ �������� �� ����. ��������� last, next ��� redo ������ ���������� ������ �����. ������������ ��������� � �������� ��� ������ ������� ������� "���� ���, ����� ��" Perl ��������� "�����������" � ���������, ��������������� ����� ��������� ��������, ����������� if. ��������� if �����������_���������;
� ������ ������ �����������_��������� ����������� �� ���������� (�� ��� �� ��������, ��� � ������). ���� ��� �������, �� ����������� ���������. ��� �������������� ������������ ����������� if (�����������_���������) { ���������; } ������ � ������ ������ �������������� ����� ���������� �� �����, �������� �������� ������ ������, � ��������� ������ ���� ������� (�.�. �� ����� ���� ������ ����������). �� ������ �������, ������, ����� ��������������� ������ ����������� �������� ������������ �������� ������� �������. ��������, ��� ��� ����� ����� �� ����� ��� ������������� ������������� �������: LINE: while (<STDIN>) ( last LINE if /"From: /; } ������, ��������� ����� ����� ������? ����� ����, �� ���� ������ ��������� �� �� ���������� �����: "��������� ������, ���� ��� ���������� �� ����� From". ����� ��������� ����, ���������� � ������ ����� � ��������������: �����2 unless �����!; # ��� unless (������) ( �����2; ) �����2 while �����!; # ��� while (�����!) ( �����2; } �����2 until �����!; # ��� until (�����!) { �����2; } �� ���� ���� ������ ������� ����������� �����!, � ����� � ����������� �� ���������� ���-�� �������� ��� �� �������� � �����2. ��������, ��� ��� ����� ����� ������ �� ������� ������� ����� 2, ������� ������ ��������� �����: chomp($n = <STDIN>) ; $i = 1; # �������� ������������� $i *= 2 until $i > $n; # ���������, ���� �� ����� ������� ��� ������, �� ����� ���������� ������� � ������� ������. ��� ����� ������ ���������� ���� � ������: ������ ������� ������ while �����2 if �����!. ��� ����������� ���, ��� ����� �����2 if �����! � ��� �� ���������, � ����������� ��������; ����� ��������� ����������� ������� ������. �������� && � || ��� ����������� ��������� �������� & & � | | � ������ ��������� ������ �� ����� ���������� ��� ���������� ���������. ����� �� ������� �� ������������ �����������? � Perl �������� ����� ���, ������� ������� ����������, ��� �� ����� ������� � ����. ��� ����� ���������� ������������ � ���������� "���� ���, ����� ��". �� ��� ������ ��� �������� �����: if (���) ( ��; } # ���� ������ �� if ���; # ������ ������ ��� ������ (������ ������, ������ ��� � �� ���� � ������): ��� && ��; ������ ��� ��������? ����� ��� �� �������� "���������� �"? ������� ���������, ��� ����������, ����� ��� ��������� �������� "������" ��� "����". � ���� ��� � ������, �� �������� ����� ��������� ��� ����� �� ��������, ������ ��� ��� ������� �� �������� �������� ��. ������� ����� ��������� ��. � ���� ��� � ����, �� ��� ��������� ����� ������ � ��� �������� ������ �������� �� ��. ��������� ��������� �� ������ ���, ��� ����� ����������. ��� ��� ��� � ������ Perl � ��������� �� ���� � ��� ������, ���� ��� �������, ��� ������ ������ ����� ������������� ���� ����������. ����������� ������� "���������� ���" ��������, ��� �������� unless (��� ����������� unless). �� ������ �������� unless (���) ( ��; ) �� ��� 11 ��; ���� �� ������, ��� ������������ ��� �������� � shell ��� ���������� ��������� ��������� ����������, �� �������, ��� � Perl ��� �������� ������. ����� �� �� ���� ���� ������������? ��� ������� �� ������ ���������� (������), �� ����, ��������� ������ ����� ���������, �������, �� ����, ����� �� ��� ��������� ��������� � ������� ������ ��-�� ���������� �����������. �������� ��������� ����� ������ � ����������, ��� ��� ������. � ���, ��������, �� ���������� ������� ������� �� ���� ��������. ����� ���������� ������� ����� ������ ����� ��������� ������, ����� ������������� �� ��� ��������. ���������� ������ � ����������� ��������� � ���������� �. 1. ������������� ���������� �� ���������� ����� ���, ����� �������� ����������� �� ��� ���, ���� � �������� ������ �� �������� �� ����� ������� ����� end. (�����: ����������� ����������� ����, � ����� ��������� �������� last, ���� ����� �� �������� ����� end.) 2. ���������� ���������� �� ����� 4 (������������ ����� �� ��������� ����� 999), ��������� ���� � ������� �� ��������. (�����: ����������� "�����" ���� � ���������� redo � �����, ����� �������� ����������� ����, � �������� last � ��������, ������������� ��� ���������� ������������ �������.) |