����� 4� ���� �����: ����������� �������������� ���������� ���� ���������� � ��� ������������������ ����������, ����������� � ������ �������� ������. ���� ���������� �������� ��������� �������: ( ������_��������; ������_��������; ������_��������; ���������_��������; > Perl ��������� ��������� �� �������, ������� � ������� � ������ ���������. (������� �� ������� � ���, ��� ����� �������� ������� ���������� � �����, �� ���� ���������� � �����.) ������������� ���� ���������� ����������� ������ ������ ���������� ���������, �� �������� �� �����. ����������� ����� � �������, ������� �� ��������� ����������, �� �����������. ����� �������, �� ������ ������������� �� ����� Perl � �-�������� (����� � ������� ������������) ��� � ������������ �������� (����� � ������� �����������). ����� ��������� ����������� ���������� ����������, �� ������ ����������� �������� ����� � ������� ���� � ��� ������, ���� ���� �������� ����� ������. �������� ������� ���� ������ � ��������� ���� ������ if: if ($ready) ( $hungry++ } if ($tired) ( $sleepy = ($hungry + 1) * 2; } �������� if/unless ��������� �� ��������� ����������� ���������� �������� �������� if. ��� ����������� ������� �� ������������ ��������� (������������ �� ����������) � �����. � ��� ����� ����� ���� �����, ������������ ���������� else, �� ������� ������� ��� ���� ���� ����������. ������� �������, ��� ��� �������� ���: if (���������) ( ��������_1 ��������_2 ��������_3 } else { ��������_1 ��������_2 ��������_3 } (���� �� ������ ��������������� �� � � Java, �� ��� ��� ������ ���� ������ ��������� �������������� �������� ������. ��� ��������� ������������� � ���������� ������� "��������� ��������� else".) �� ����� ���������� Perl-��������� ����������� ����������� ���������. ���� ��� �������, �� ����������� ������ ���� ���������� � ����������� ���� �������. ���� ��������� �����, �� ����������� ������ ����. ��� �� ����� "������" � "����"? � Perl ��� ������� ��������� �����������, ��, ��� �� �����, ���� ��������� ����������. ����������� ��������� ����������� ��� ��������� �������� � ��������� ��������� (���� ��� ��� ������, ������ �� ����������, � ���� ��� �����, �� ��� ������������� � ������*). ���� ������ ������ ���� ����� (�.�. ����� ������� �����), ���� ������� �� ������ ������� "�" (����� ����), �� �������� ��������� � "����". ��� ��������� ������������� ���� �������� "������". ������ �� � Perl ����� �������� �������? � ������, ��� ��� ��������� �������� ������� �� ������ �� ���� (� ����������������� ���������� �����), �� � �� ������ (� ����������������� ��������) ������, ������ ��� ������������� �������� ���� ������ ���������������� �������� "������" � "����". ��� ��������� �������� ������������� ���� ��������. � # ������������� � "�", ������� "����" 1-1 # ���� � ���������� 0, ����� ������������� � "�", ������� "����" 1 # ������������� � "I", ������� "������" "" # ������ ������, ������� "����" "1" # �� "" ��� "�", ������� "������" "00" # �� "" ��� "�", ������� "������" (��� �������, ������� ������ ���������) "0.000" # "������" � ������ �����������, �� ��� �� ������� undef # ���� � ���������� "", ������� "����" * ��������� ��� ���������� ��������� �����, �� ������ ��� ����������� ���, ����� ������ ��� � ����������.
����� �������, ������������� �������� ��� �������� ��� ������ ���������� ����������, �� ����� ��� ��� �� ������. ��� ������ ������� ��������� if: print "how old are you? "; $a = <STDIN>; chomp($a) ; if ($a < 18) ( print "So, you're not old enough to vote, eh?\n"; ( else ( print "Old enough! Cool! So go vote! \n"; $voter++; # count the voters for later ) ���� else ����� ��������, ������� ������ �����, ���������� then: print "how old are you? "; $a - <STDIN>; chomp($a) ; if ($a < 18) ( print "So, you're not old enough to vote, eh?\n"; } ������ ������ ������ ����� "then" �������� � �������� ������ else, ������ ��� ����� ����������� ������� "�������� ��, ���� ��� ����", ������ "�������� ��, ���� ��� � �� ������". � Perl ���� ������ �������� � ������� ��������� unless: print "how old are you? "; $a = <STDIN>; chomp ($a) ; unless ($a < 18) ( print "Old enough! Cool! So go vote!\n"; $voter++; > �������� if �� unless � ��� ��� ����� ��� ������� "���� ����������� ��������� �����, �������..." (�������� unless ����� ��������� ���� else, ��� � �������� if.) ���� � ��� ������ ���� ��������� ���������, ������� � �������� if ����� elsif, ��������: if (��������� ����) { ��������_1_���_������_ ����; ��������_2 _���_������_����; ��������_ 3_���_������_ ���� ; } elsif (���������_���) { ��������_1_���_������_��� ��������_2_���_������_��� ��������_3_���_������_��� } elsif (���������_���) ( ��������_1_���_������_��� ��������_2_���_������_��� �������� _ 3_���_������_ ��� } else ( - ��������__ 1_���_����_������; ��������_2_���_����_������/ ��������_3_���_����_������; } ��� ����������� ��������� ����������� �� �������. ���� �����-���� ��������� �������, �� ����������� ��������������� �����, � ��� ��������� ����������� ��������� � ��������������� ����� ���������� ������������. ���� ��� ��������� �����, �� ����������� ����� else (���� ������� �������). ����������� ����� else �� �����������, �� �� ������� �� ��������. � ��������� ����� ���� ������� ������ elsif, ������� ��� ����������. �������� while/until �� ���� ���� ���������������� �� ��� �� ������ ��� �����-������ ����� ����������� �����* (�������������� ���������� ����� ����������). Perl ����� ������������ ���� � ������� ��������� while: while (���������) { ��������_1; ' ��������_2; ��������_3; } ����� ��������� �������� while, Perl ��������� ����������� ��������� (� ������ ������� � ���������). ���� ���������� �������� � "������" (�� �������� � Perl �������� ������������ ����������), �� ���� ��� ����������� ���� ��������� while. ��� ����������� �� ��� ���, ���� ����������� ��������� �� ������ ������. ����� Perl ��������� � ���������, ���������� ����� ����� while. ��������: print "how old are you? " ; $a = <STDIN>; chomp($a) ; while ($a > 0) { print "At one time, you were $a years old.\n"; $a�; } ������ ����� ������� "�� ��� ���, ���� ���-�� �� ������ ��������", ��� "���� �� ��� � ������". ��� ����� ������ � Perl ���� ���� �����. ��������� ������ ���� ������ while �� until: until (���������) { ��������_1; ��������_2; ��������_3; } * ��� ������ HTML � �� ���� ����������������. �������� �������� �� ��, ��� � ����� ������ ��������� ���� ����� ��������� ������������, ���� ��� ������� ������������ ��������� ����������, ��� ���� ������ ���� ��������. ��������, ���� � ����������� ���� ��������� ��������� ������������ ������ ������� ������ ����. Perl ��������� ���� �����. ������ ����� ��������� ���, ��� ����������� ��������� �� ���� ����� �����������. ��� ��������� ���������, � ������ � ����������, ������� ������� �� ���������. ��������, �� ������, ����� ���� ���������� ��� �����, ���� � ��� ��� ������, � ����� ����� ������� �����-�� ��� ��������� ������. ��� ����� ����� ������������ ��� ���������-������, ������� ������ �������� �� ��� ���, ���� ������� �� �������. �������� do {} while/until �������� while/until, ������� �� ������ � ���������� �������, ��������� ������� � ������ ������� �����, �� ����� � ����. ���� ��������� �������� ������� � "����", ���� �� ����� �������� ������. ������ ��������� ������������� ��������� ������� �� � ������, � � ����� �����. ��� ����� � Perl ���� �������� do {} while, ������� ����� ����� �� ������� �������� while*, �� ����������� ����, ��� �� ��������� ��������� ������ ����� ������������ ���������� �����. do ( ��������_1; ��������_2; ��������_3; } while ���������; Perl ��������� ��������� ����� do. ����� �� �����, �� ��������� ��������� �� ������� ����������. ���� ��������� �����, ���� �����������. ���� ��������� �������, ���� ���� ����������� ��� ���, � ����� ��������� ����������� �����. ��� � � ������� ����� while, ������� �������� ����� �������������, ������� do {} while �� do {} until. ��������� ��� ����� ����������� � ����� �����, �� �� �������� �������. � ��������� �������, �������� �������, ����� ������ ������ ������� �������������� ����� ������������. $stops = 0; do ( $stops++; print "Next stop? " ; chomp($location = <STDIN>) ; } until $stops > 5 I I $location eq 'home'; * ��, �� ������ ����� ����� �����; ����������� ��������� �����, ��������� � ����� 9, � ����� ����� �� ��������. �������� for ��� ���� ����������� Perl, ��������������� ��� ����������� �����, � �������� for, ������� �������� ������������� ������ �� �������� for ������ � � Java � �������� �������� ��� ��. ��� ��: for ( ���������_���������; �����������_��������� ,� �������������� ��������� ) ( ��������_1; ��������_2; ��������_3; 1 ���� ������������� ���� �������� � �� �����, ������� �� ����������� ������, �� �� ������ �����: ��������� ���������; while (����������� ���������) { ��������_1; ��������_2; ��������_3; ��������������_�����:����; } � ����� ������ ������� ����������� ��������� ���������. ��� ���������, ��� �������, ����������� ��������� �������� ���������� �����, �� ������� ����������� ������������ ����, ��� ��� ����� ���������, �� ����������; ��� ���� ����� ���� ������ (� ������ �� ������). ����� ����������� ����������� ���������. ���� ���������� �������� �������, ����������� ���� �����, � ����� ����������� �������������� ��������� (��� �������, ������������ ��� ����������������� ���������� ����� � �� �� ������ ��� �����). ����� Perl �������� ��������� ����������� ���������, �������� ����������� ��������. ��������� �������� ��������� ������������ ��� ������ �� ����� ����� �� 1 �� 10, ����� ������� �� ������� ������� ������: for ($i = 1; $i <- 10; $i++) ( print "$i "; ) ������� ���������� $i ��������������� � 1. ����� ��� ���������� ������������ � ������ 10. ��������� ��� ������ ��� ����� 10, �� ����������� ���� ����� (���� �������� print), � ����� ����������� �������������� ��������� ($i++), � ���������� ���� �������� $i ���������� �� 2. ��������� ��� ���������� ��� ��� ������ ��� ����� 10, ������� ����������� �� ��� ���, ���� � ��������� �������� �������� 10 � $i �� ��������� �� 11. ��������� ���������� $i ��� �� ������ � �� ����� 10, ���� ����������� (��� ���� $i ���������� ������ 11).
�������� foreach ��� ���� ����������� ����������� � �������� foreach. ���� �������� �������� ������ �������� � ����������� �� �� ������� ��������� ����������, �������� � ������ ����������� ������������� ���� ����. �������� ��� ���: foreach $i (@������) { ��������_1; ��������_2; ��������_3; } � ������� �� C-shell, � Perl �������� �������� ���� ��������� ���������� ��� ������ �� ����� ������������� �����������������; ������� �������, ��� ��������� ���������� �������� ��� ������� �����. ��� ������ ������������� ��������� foreach: @� = (1,2,3,4,5); foreach $b (reverse @a) { print $b; 1 ��� ��������� ������� �� ����� 54321. �������, ��� ������, ������������ � ��������� foreach, ����� ���� ������������ ��������� ���������, � �� ������ ����������-��������. (��� ����������� ��� ���� ����������� Perl, ������� ��������� ������.) ��� ��������� ���������� ����� ��������. � ���� ������ Perl ����� ����������� ���, ��� ����� �� ������� ��� ���������� $_. �� �������, ��� ���������� $_ ������������ �� ��������� �� ������ ��������� ����� Perl, ������� �� ����� ������������� ��� ������� ��������� ����������. (��� ��������, � ������� �� ��������� ������������ $_, ����� ������������ � ������� ��������� ����������.) ��������, ������� print ������� �������� ���������� $_, ���� ������ �������� �� �������, ������� ��������� ������ ���� ����� �� ���������, ��� � ����������: @� = (1,2,3,4,5); foreach (reverse @a) { print ; } ������, ��������� ������������� ������� ���������� $_ ��� ��������? ����� �� ������������� � ������� ��������� � ����������, ������� �� ��������� ���������� $_, �� ��� ���� ������� ���������� ������ �����������. ��� ���� �� ��� �������, ����� �������� ����������� ����� �������, ��� �������. ���� ������, ��� ������� ������������ ����������� ��������������, ������� �� �������� ����������, � �� ������� ��� ������ �������, ������������ ��������� ��������, �� ������������ � ����� ���������� ������������ ����� ��������� ��� ������ ���������� ����� ������, � �� ������ ����� �� ��������. ��� ������, ���, ������� ��������� ����������, �� ��������� � ���������� ������� � ������, ������� �� �������������. ��������: @� = (3,5,7,9) ; foreach $one (@a) { $one *= 3; > # @� ������ ����� (9,15,21,27) �������� �������� �� ��, ��� ��������� ���������� $��� ������� � ��������� ������� �������� ������� @�. ���������� ������ � ����������� ���� � ���������� �. 1. �������� ���������, ������� ����������� ����������� ����������� ������� � ������� �� ����� ����� "too hot", ���� ����������� ���� 72 �������� (�� ����������), � � ��������� ������ ������� "too cold". 2. ������������� ��������� �� ����������� ���������� ���, ����� ��� �������� �� ����� "too hot", ���� ����������� ���� 75 ��������, "too cold" ��� ����������� ���� 68 �������� � "just right!" ��� ����������� �� 68 �� 75 ��������. 3. �������� ���������, ������� ������ ������ ����� (������ �� ������� �������� � ��������� ������), ���� �� ����� ��������� ����� 999, ����� ���� ��������� ������� ����� ���� ���� �����. (�� � ���� ������ �� ����������� 999!) ��������, ���� �� ������� 1, 2, � � 999, ��������� ������ �������� ������ 6 (1 + 2 + 3). 4. �������� ���������, ������� ������ ������ ��������� �������� (������ �� ������� �������� ��������� ������) � ������� ��� �� ����� � �������� �������, ������ ��� ���������� ��� ������� �������� reverse. (���������, ��� <stdin> ��� ������������� � ��������� ��������� ������ ������ ��������� ��������, ������ �� ������� �������� ��������� ������.) 5. �������� ���������, ������� ������� �� ����� ������� ����� �� 0 �� 32 � �� ���������. ���������� ���������� ������, ��� ������� ������ �� ����������� ������ ��������� ��� ��������� �����, � ����� ������, ��� ������� �� ����� �������� ���. (����� ��������� ��������� �������� ����� ��������������, ����������� ������� printf "%5g �8�\�", $�, $� ������� ������� $� ��� ����������� �����, � $� � ��� �������������. |