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

����� 5

    � ���� �����:


����

 

��� ����� ���

���* ����� �� ������, ������� �� ������������� ����, ���, ��� ������������ ����� ����� ��������� ������, ��������� �������� �������� ���������� �� ���������� ��������. � ������� �� �������, ��������� �������� ���� � �� ����� ��������������� �����, � ������������ �������. ��� ������� (���������� �������) ������������ ��� ������� �������� �� �������.

�������� ���� �� ����� � �����-�� ���������� �������. ������ ������������� �� ��� ������ ����������������� ��������. ������� �������� ������ �������� � ��� ����, � ������ � ��������. ������ ���, ����� �� ��������� � ��� ��������, ��������� ����� ��������. ����� ����� �������� ��������, �� ���������� ����, � Perl ������� ����������� ��������. ������� ������� ��������, �� ���� ����, ���� �� ������. Perl ������ ��� �������� (�.�. ���� ����-��������) � ������ ���������� �������, ������� ��������� ����� ���������� ��������, ������� ��� ������ �� ���������� ������������� ��� ����. ������� �������� �������� �������� ������, ��� ��� ���� � �� ���������**.

���-����������

��� ���-���������� ������� �� ����� �������� (%) � �����, �� ������� ����� ���� ������ �����, ����� � ����� ������������� ������ �� ���� � ������. ������� �������, ����� ����� ����� ����� �������� ������ ��

* � ������ ������������ ���� ���������� �������������� ���������, �� �� ��������� ������ ��������� � ����� ����������������� ������� ����� ������������ ������, ��� ������ �������� ��� ������� ����� ������� ����������� ������.

** ������ ���� IxHash � DB_fiIe ������������ ��������� ������� ������������, �� ����� ������������� �������� ������������������.

 

��������������� ����� ���� ��������� ���������� � ��������. ����� ����, ����� ��� ��, ��� ��� ������� ����� ����� $fred � @fred, ���-���������� %fred �� ����� ������ ������ � ���������� ���������.

���� ����� ��� ��������� � ������������ ����� ��������� � ��� ���������, � �� �� ����� ����. ������ ������� ���� � ��������� ��������� ����������, ��������� ����� ������, �������������� ����� ��������� �������� � ���������� ������. ���, ��������� � ��������� ���� %fred ������������ ����� �������� $fred{ $����}, ��� $���� � ����� ��������� ���������. ����� ����������, ��� ��������� � �������� ���� ������� ����� ����������, ������ ��������� �� ����� ���� �������.

��� � � ������ � ���������, ����� �������� ���� ��������� ����� ������������ ��������:

$fred{"���"} == "bbb"; # ������� ���� "���", �������� "bbb" $fred(234.5} = 456.7; # ������� ���� "234.5", �������� 456.7

� ������� ���� ���������� � ���� ��������� ��� ��������. ��� ����������� ��������� � ��������� (�� ��������� ������) ������������ ����� ���������� ��������:

print $fred("���"); # ������� �� ����� "bbb" $fred{234.5) += 3; # ������ �������� ������ 459.7

��� ��������� � ��������������� �������� ������������ �������� undef (��� � ��� ��������� � �������������� �������� ������� ��� � �������������� ��������� ����������).

����������� ������������� ����

� ��� ����� ���������� ������������� ���������� � ���� ������� � ��������, ����� ���������������� ��� ��� ����������� � ������ ���. ���������� � Perl �������� ������������ ������� ��� ���� �� �������������, ������� �� ������ �������������� � ���� ������. ������ ���� ��������� ����� ������ (� ������� ������ ������ ���� ������ ����� ���������) ������ ���� � ��������������� ��������. ��� ����������� ������������� ����� ���� ��������� ������� ����, ������� ����� ���������� ��� �� ����� ���. ������� �������:

@fred_list = %fred; # @fred_list �������� ��������

# ("���","bbb","234.5","456.7") %barney = @fred_list; # ������� %barney ��� %fred %barney = %fred; # ���������� ����� ���������� ���� ������ %smooth � ("���","bbb","234.5","456.7") ;

# ������� %smooth ��� %fred �� ����������� ��������

 

������� ��� ����-�������� � ���� ����������� ������� ������������ � �������� �� ���������. ���� ���� �� ������� ������� �����-�� �������� ��� �������� ��� �������, ������������ ����������� ������ ��� ����� ����� ������ � ��� �������, ������� Perl ������ ��� ����������� ������������ ������� � ��������� ���������. �� �� ����� ���������� ������������������ ������������ ������.

���� �� ���������� ������ �����������-������������� � ����������� ���-�������� � ������ ���-����������:

%���� = %original; # ���������� �� %original � %����

��������� �������� reverse, ����� ������� ���, � ������� ����� � �������� ���������� �������:

%backwards = reverse %normal;

�������, ���� %normal ����� ��� ���������� ��������, �� � %backwards ��� ����������� � ���� �������, ������� ������ �������� ����� ����� ��������� ������ ��� ������ � ����������� ������� � ����������.

���-�������

� ���� ������� ����������� ��������� �������, ��������������� ��� ��������� �����.

������� keys

������� keys( %���_����) ������ ������ ���� ������� ������, ��������� � ���� %���_����. ������� �������, ���������� ���� ������� ������������ ����������� ���� ��������� ������ � ��������� �������� (������, ������, ����� � �.�.) ����� ������������� ���� %���_���� � ��������� ���������, ������ ������� keys ���������� �� ������ � ���� �������. ���� �������� � ���� �����������, ������� keys ���������� ������ ������.

�������� ��� ������� � ���� �� ���������� ��������:

$fred("aaa"} = "bbb";

$fred{234.5) = 456.7;

Olist = keys(%fred); # @list �������� �������� ("���",234.5) # ��� (234.5,"���")

��� � �� ���� ��������� ���������� ��������, ������� ������ �� �����������: ������� keys %fred ��������� ��������� keys (%fred).

foreach $key (keys (%fred)) ( # ���������� ��� ������� �������� ���� %fred

print "at $key we have $fred($key}\n"; # �������� ���� � �������� }

 

� ���� ������� �������� �����, ��� ��������� �������� ���� ����� ����������������� � ������ � ������� ��������. ���� ���, ������, ��������������� ����� ������� ������*.

� ��������� ��������� ������� keys ������ ����� ��������� (��� ����-��������), ������������ � ����. ��������, �� ������ ��������, ���� �� ���, ���:

if (keys(%xeni)) { # ���� keys() �� ����� 0:

...; # ������ �� ������ )

# ... ��� ...

while (keys(%xem) < 10) {

. . .; # ���������� ����, ���� ������ 10 ��������� }

��� ���� ����� ������, ���� ��� ��� ���, ����� ������ ������������ ������� %��� � ��������� ���������:

if (%���) ( # ���� "������", � ��� ���-�� ����

# ���-�� ������� )

������� values

������� values (%���_�������) ���������� ������ ���� ������� �������� ���������� ������� � ��� �� �������, � ����� ������� keys ( %���_�������} ���������� �����. ��� ������, ������� ������ �� �����������. ��������:

%lastname =0; # ������� %lastname ������ $lastname("fred"} = "flintstone";

$lastname("barney"} = "rubble";

Olastnames = values(tiastname); # �������� ��������

������ @lastnames ����� ��������� ���� �������� ("flintstone", "rubble"), ���� ("rubble", "flintstone").

������� each

��� ���������� ����� ��� ���� ����� (�.�. ��� �������� ������� ��� ��������) ����� ������������ ������� keys � �������� �������� �� ������������ �� ������. �������������, ���� ����� ������ ������������, �� ���� � ����� ����������� ������ � ������� each ( %���_����), ������� ���������� ���� ����-�������� ��� �������������� ������. ��� ������ ���������� ���� ������� ��� ������ ���� ������������ ��������� ���� ����-��������, ���� �� ����� ��������� ��� ��������. ���� ��� ������ ���, each ���������� ������ ������.

* �����, � ��������, � ������� �����, �� ����� � ������ �� �� �������.

 

��������, ����� ������ �� ���� %lastname �� ����������� �������, ����� ������������ ����� �����:

while ( ($first,$last) = each(%lastname)) {

print "The last name of $first is $last\n";

}

������������ ������ �������� ����� ���� ���������� ������� each ������� � ��� ������. ���������� ��������� � ��� � �������� �� ���� ��������� � ���� ���������� ����� ������ ����� "��������" ������� each (� ���, ��������, ����).

������� delete

����, �� ������ ��������� �������� � ���, �� ���� �� ������ ������� �� (����� ��� ����� ������������ ������ �������� ����� ����). ��� �������� ��������� ���� � Perl ������������ ������� delete. ������� ���� ������� � ���-������, ����������� ���, ������� ������������ ��� ���������� ����������� �������� �� ����. Perl ������� �� ���� ��������������� ������ ���� ����-��������. ��������:

%fred = ("aaa","bbb",234.5,34.56); # �������� � %fred ��� �������� delete $fred("aaa"}; # ������ � ���� %fred ������ ���� ���� ����-��������

����� �����

��� � � ������ � ����������-�������� (��� ��������� ���������), ����� ��������������� ������ ����, ��� ���� ����������� ���������� �� � ������ ��� ��������, � ������������ � ������ ���������. �������, � �������, ���������� ���� � �����:

$score("fred"} - 205;

$score("barney"} = 195;

$scoref"dino"} = 30;

��� ��� ����� �������� ����� �������:

($score("fred"},$score("barney"),$score("dino")) � (205,195,30);

�� ���� ��� ������� ������, ������� ������� ���������� ���� ����:

$score{"fred","barney","dino"} = (205,195,30);

��� ��� ������� ������. ����� �������� ������������� ����� ���� � ������������ ����������:

@players = qwffred barney dino);

print "scores are: @score(@players}\n";

 

����� ����� ����� ����� ������������ ��� ������� ���������� ���� � ����� �������. � ���� ������� ������� ��� ����� ��������� � ��� ������, ��� ��� ������� ������-���������� ������������ �������� �� �������� ����:

@league{keys %score( = values %score;

����� �������� ���� %score ��������� � ����� %league. ��� ������������ ���������� ������� ����� ��������� ��������:

%league = (%league, %score); = # ����� %score � %league

����������

������ � ����������� ���� � ���������� �.

1. �������� ���������, ������� ������ ������, � ����� ������� ��� ������ � ��������������� �� �������� �������� ����������� ���� �������:

����

�����

red green blue

apple

leaves ocean

 

2. �������� ���������, ������� ������ ��� ���� (�� ������ � ������) �� ����� �����, � ����� ������� �� ����� ������ � ���, ������� ��� ����������� ������ �����. (�������������� ������: ������������ ������������ �� ������ ����� �� �� ASCII-��������� � ������� ����������� ���������.)

 




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


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