| ���������� | ����������� | �������� | ������
| ����� 1 | ����� 2 | ����� 3 | ����� 4 | ����� 5 | ����� 6 | ����� 7 | ����� 8 | ����� 9 | ����� 10
| ����� 11 | ����� 12 | ����� 13 | ����� 14 | ����� 15 | ����� 16 | ����� 17 | ����� 18 | ����� 19
| ���������� � | ���������� � | ���������� � | ���������� � |

����� 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�\�", $�, $�

������� ������� $� ��� ����������� �����, � $� � ��� �������������.




|     �����     |     ������     |


| ���������� | ����������� | �������� | ������
| ����� 1 | ����� 2 | ����� 3 | ����� 4 | ����� 5 | ����� 6 | ����� 7 | ����� 8 | ����� 9 | ����� 10
| ����� 11 | ����� 12 | ����� 13 | ����� 14 | ����� 15 | ����� 16 | ����� 17 | ����� 18 | ����� 19
| ���������� � | ���������� � | ���������� � | ���������� � |