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

����� 3

    � ���� �����:


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

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

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

������� ����� ����� ����� ����� ���������. ���������� ��������� ������ �� ����� ��������� ������, ����� ��� ����������� ��������� ����� ��������� ��� �������� ������. ��� ��� ���� ������������� �������� � Perl ��������� "���������� �������� �����������".

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

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

(1,2,3) # ������ �� ���� �������� 1, 2 � 3 ("fred",4.5) # ��� �������� � "fred" � 4,5

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

($�, 17; # ��� ��������: ������� �������� ���������� $� � 17 ($b+$c,$d+$e) # ��� ��������

������ ������ (������, �� ���������� ���������) �������������� ������ ����� ������� ������:

() # ������ ������ (���� ���������)

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

(1 .. 5) # �� �� �����, ��� (1, 2, 3, 4, 5)

(1.2 .. 5.2) # �� �� �����, ��� (1.2, 2.2, 3.2, 4.2, 5.2)

(2 .. 6,10,12) # ���� �����, ��� (2,3,4,5,6,10,12)

($� .. $b) # ��������, �������� �������� ���������� ���������� $� � $�

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

(1.3 .. 6.1) # �� �� �����, ��� (1.3,2.3,3.3,4.3,5.3)

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

@� = ("fred","barney","betty","wilma"); # ��-�!

������� ������������� ������� ���������� � �������, ������� ������� ������ �� ����������� ��������� ����, ����������� � ������� ������*:

@� = qw(fred barney betty wilma); # ���-�� �����! @� = qw(

fred

barney

betty

wilma ); # �� �� �����

���� �� ��������� ���������� ���������� �������� � � �������� ��������� ������� print, � ������� �� ��� �������. �������� ������ ��������� �� ����� ��� ������������� ���������� ��������:

print("The answer is ",$a,"\n"); # �������������� ��������� �������

���� �������� ������� �� ����� ����� The answer is, ����� ������, �������� ���������� $� � ������ ����� ������. ������ ������� ������������� ��������� ��������� �� ���������� �������.

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

����������

����������-������ �������� ���� �������� � ���� ������ (���� ��� ����� ��������� ��������). ����� ����������-�������� ������ �� ����� ��������� ����������. ������������ ������� ������� � ������ ������� �-��� �� ���� ������� ($), � ���� @. ��������:

@fred # ������-���������� @fred @A_Very_Long_Array_Variable_Name @A_Very_Long_Array_Variable_Name_that_is_different

������� �����, ��� ����������-������ @fred �� ����� �������� ��������� � ��������� ���������� $fred. ��� ������ ����� ���������� Perl ��������������� ��������� ������������ ����.

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

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

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

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

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

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

@fred = (1,2,3); # ������ fred �������� �������������� ����������� �������� Qbarney = @fred; # ������ ��� ���������� � @barney

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

@huh =1; #1 ������������� ���������� ������� (1)

 

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

@fred = qw(one two);

@barney = (4,5,@fred,6,7) ; # @barney ������������ � (4,5,"one","two",6,7) @barney = (8,@barney); # � ������ ������ ��������� Qbarney �������� 8

# � "last" � �����. Qbarney = (@barney,"last") ; # @barney ������������ �

# (8,4,5,"one","two",6,7,"last")

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

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

($�,$�,$�) = (1,2,3); # ��������� 1 ���������� $�, 2 � ���������� $�,

# 3 � ���������� $� ($a,$b) = ($b,$a); # �������� ������� $� � $� ($d,@fred) = ($a,$b,$c) # ��������� $d �������� $�, a @fred � �������� ($�,$�) ($e,@fred) = @fred; # ����������� ������ ������� ������� @fred

# � ���������� $�. � ���������� @fred = ($�),

# � $� = $�

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

����������-������, �������� � ����������� ������, ������ ������ � ��� ���������, ������ ��� ����������-������� ����� "����������" � ��������� ��� ���������� ��������. (�������, ����� ��� ����� ��������� � ������ ����������, �� ���� �� ����� ��������� �������� undef.)

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

@fred = (4,5,6); # ������������� ������� @fred $� = @fred; # $� �������� �������� 3, ������� ������ ������� @fred

������ ������������ � � ��� ������, ���� ��� ����������-������� ������������ ���, ��� ������ ���� ��������� ��������. (� ������� "��������� � ��������� ���������" �� ������, ��� ��� ���������� �������������� �����

* ���� ������ �� ������ � ����� ���� ��������� ������, �� ����� ���� ��� �� �������� ������������� ������ � �������� �������� ������� ������. �������, �������� ��� ����� ��� ��, ��� ��������� ��������� ����������� �������. ��. ����� 4 ����� Programming Perl � man-�������� perllol( I).

 

������� � ��������� ���������.) ��������, ����� �������� ����� �� ������� �������, ��� ������ �������, ����� ������������ @fred-l, ��� ��� ��������� �������� ��������� ������� ������� �������� � ����� ������. �������� �������� �� ��������� ������:

$� = @fred; # ���������� $� ������������� ������ ������� @fred ($�) = @fred; # ���������� $� ������������� ������ ������� @fred

������ ������������ � ���������, � ������ @fred ��������������� ��� ������, ������� �������� ���������� $� ����� ����� ������� �������. ������ ������������ � ��� ������� (�������� �� ��, ��� ��������� ����� ���� ��������), ������� ���������� $� � �������� �������� ������������� ������ ������� ������� @fred, � ��������� �������� ������ �������������.

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

@fred = (Qbarney = (2,3,4)); # @fred � @barney �������� �������� (2,3,4) @fred = @barney = (2,3,4); # �� �� �����

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

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

�������� ������� ���������� ����������������� ������ ������� � ����� 1, ������� � ����*. ������ ������� ������� @fred ������������ ��� $fred[0]. �������� ��������: ��� ������ �� ������� ������ ����� @ � ����� ������� ������������ ���� $ . ��� ����������� ���, ��� ��������� � �������� ������� �������������� ��������� ���������� (����� �������), ������� � ���������� ����� ���� ��������� �������� ��� ������� ������������ � ���������, ��������:

@fred = (7,8,9);

$b = $fred[0]; # ��������� $� �������� 7 (������ ������� ������� @fred) $fred[0] = 5; # ������ @fred = (5,8,9)

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

$� = $fred[l]; # ��������� $� �������� 8

$fred[2]++; # ���������������� ������ ������� ������� @fred

$fred[l] +=4; # ��������� 4 �� ������� ��������

($fred[0],$fred[l]) = ($fred[l],$fred[0]) ;

# �������� ������� ������ ��� ��������

* �������� ������� ������� �������� ����� �������� �� ���-������ ������ (��������, �� "1"). ���, ������, �������� �� ����� ����� ��������� �����������: ����� �������� ���, ��� ����� ������������ ��� ���, � ��������� ���������, ������� �� ����������� � ������. �� ���� ������� ������������ ����������� ������� ����� ����������� �������������.

 

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

@fred[0,l] * �� ��, ��� � ($fred[0],$fred[l]) @fred[0,l] = @fred[l,0] # �������� ������� ������ ��� �������� @fred[0,l,2] = @fred[l,l,l] # ������� ��� ��� �������� ������, ��� ������ @fred[l,2] = (9,10); # �������� ��������� ��� �������� �� 9 � 10

�������� ��������: � ���� ����� ������������ �� $, � @. ��� ������� ���, ��� �� �������� ����������-������ (������� ��� ����� ����� �������), � �� ��������� ���������� (��������� � ������ �������� �������).

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

@who = (qw(fred barney betty wilma))[2,31;

# ��� @� = qw(fred barney betty wilma); @who = @x[2,3]

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

@fred � (7,8,9) ;

$� = 2;

$b " $fred[$a); f ��� $fred[2], ��� 9

$� = $fred[$a-l]; # $c �������� �������� $fred[l], ��� 8

($�) = (7.8,9)[$�-1]; # �� �� �����, �� � ������� �����

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

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

Sfred = (7,8,9); f ��� � ���������� ������� Bbarney =(2,1,0);

Obackfred = @fred[@barney];

# �� ��, ��� � @fred[2,l,0], ��� ($fred[2],$fred[l],$fred[0]), ��� (9,8,7)

���� ���������� � ��������, ������������ �� ��������� ������� (�.�. ����� ������ ������ ���� ��� ������ ������� ���������� ��������), �� ������������ �������� undef. ��������:

@fred = (1,2,3) ;

$barney = $fred[7]; # $barney ������ ����� �������� undef

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

 

������������ �������� ��������, ������������ �� ��������� �������� �������, ������������� ��������� ��� (� ������������� ���� ������������� ���������, ���� ������� �������, �������� undef). ��������:

@fred = (1,2,3);

fred[3] = "hi"; # @fred ������ ����� �������� (1,2,3,"hi") $fred[6] = "ho"; # @fred ������ ����� ��������

# (1,2,3,"hi",undef,undef,"ho")

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

��� ��������� �������� ������� ���������� �������� ������� @fred ����� ������������ �������� $#fred. ����� ���� ������ ��� ��������, ����� �������� ������ ������� @fred, �� ���, ��� �������, �� �����, ������ ��� ������ ������� ������������� � ����������� �������������.

������������� �������������� ������� ��������, ��� ������� ����� �������� ������ �� ���������� �������� �������. ���, ��������� ������� ������� ����� ��������, ������ ������ -1. ������������� ������� ����� ����� ������ -2 � �.�. ��������:

@fred = ("fred", "wilma", "pebbles", "dino");

print $fred(-l]; # ������� "dino" print $#fred; # ������� 3 print $fred[$#fred]; # ������� "dino"

������� push � pop

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

push(@mylist,$newvalue); # �������� Omylist =� (@mylist,$newvalue) $oldvalue = pop($mylist); # ������� ��������� ������� �� @mylist

���� � ������� pop ������ ������ ������, ��� ���������� undef, �� �������, � ������������ � �������� � Perl ��������, �������� ���������������� ���������.

������� push ����� ��������� ������ ��������, ���������� ��������� � ����. ��� �������� �������� � ����� ������. ��������:

@mylist = (1,2,3);

push(@mylist,4,5,6) ; # @mylist = (1,2,3,4,5,6)

�������, ��� ������ �������� ������ ���� ������ ����������-�����-��, ������ ��� ��� ����������� ������� ������� push � pop ������ �� �����.

������� shift � unshift

������� push � pop ��������� � "������" ����� ������ (����� �� �������� ���������). ������� unshift � shift ��������� ��������������� �������� � "�����" ����� ������ (����� � �������� ���������). ��� ��������� ��������:

unshift(@fred,$a); # ������������� Bfred = ($a,@fred);

unshift (@fred,$a,$b,$c); # ������������� @fred = ($�,$b,$c,@fred);

$� = shift(@fred); # ������������� ($x,@fred) = @fred;

# � ��������� ���������� @fred = (5,6,7) ;

unshift(@fred,2,3,4); # @fred ������ ����� �������� (2,3,4,5,6,7) $� = shift(@fred) ;

# $� �������� �������� 2, @fred ������ ����� �������� (3,4,5,6,7)

��� � ������� pop, ������� shift, ���� � ��� ������ ������ �������-���-������, ���������� �������� undef.

������� reverse

������� reverse �������� ������� ���������� ��������� ��������� �� ��������������� � ���������� ������-���������. ��������:

@� = (7,8,9) ;

@b = reverse(@a); t ����������� @� �������� (9,8,7) @b == reverse (7,8,9); # ������ �� �� �����

�������� ��������: ������-�������� �� ����������, ��� ��� ������� reverse �������� � ������. ���� �� ������ �������� ������� ��������� "�� �����", ������-�������� ������� ����� ��������� ��� �� ����������:

@� = reverse (@b); t ��������� ������� @� ��� �� ��������,

# �� ����������� ��� �������� � �������� �������

������� sort

������� sort ��������� ��������� ���, ��� ����� ��� ��������� ������, � ������� ����������� �� ����� ASCII. ��� ���������� ��������������� ������, �� ������� ��������. ��������:

@� � sort("small","medium","large") ;

# @� �������� �������� "large", "medium", "small" @� = (1,2,4,8,16,32,64) ;

@� = sort (@y); # @� �������� �������� 1, 16, 2, 32, 4, 64, 8

�������, ��� ���������� ����� ������������ �� �� �� �������� ���������, � �� �� ��������� �������������� (1,16, 2, 32 � �.�.). ������ ����� 15, �� ��������� ��������� ���������� �� �������� ���������, �� ��������, �� �������� ������� ������ � ������ ����� ������ �������.

������� chomp

������� chomp �������� �� ������ �� ��������� ����������, �� � � ��������. � ������� �������� ������� ��������� ��������� ���������� ������. ��� ������, ����� ��, �������� ��������� ����� ��� ������ ��������� ��������� �������, ������ ������������ ������ �� ���� ����� ������� ����� ������. ��������:

@stuff = ("hello\n","world\n","happy days") ;

chomp(@stuff); # Sstuff ������ ����� �������� ("hello","world","happy day")

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

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

��� �������, ��� ������� �������� �� �����, �� ������ � ������ ���������� ����� �������� ���������� ������ ����������. ��������, � ��������� ��������� @fred ���������� ���������� ������� Sfred, � � ��������� � ������ ����� �������. ��� �������� �������� � ������� �� ��������� ��� ��������.

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

<STDIN> ��� ������

���� �� ����� ��������� ���� ��������, ������� � ��������� ��������� ���������� ���� ��������, ��� � ���������, � <stdin>. ��� ����������� ����, <stdin> � ��������� ��������� ���������� ��������� ��������� ������. � ��������� �� ��������� ��� �������� ���������� ��� ������, ���������� �� ����� �����. ������ ������ ��� ���� ������������ ��� ��������� ������� ������, ��������:

$� = <STDIN>; # ������ ����������� ���� � ��������� ���������

���� ������������, ����������� ���������, ������ ��� ������ � ������ [Ctrl+D]* (����� ���������� ����� �����), ������ ����� �������� �� ���� ���������. ������ �� ��� �������� �������, ��������������� �������� ����� ������, � ������������� ��������� ������������� ������.

* � ��������� �������� ����� ����� ������������ �������� ������ [Ctrl+Z], � � ������ ��� ���������� ������ ��� ������������ ������������ ��������.

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

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

Ofred = ("hello","dolly");

$� = 2;

$� = "This is $fred[l]'s place"; # "This is dolly's place" $x = "This is $fred($y-l]'s place"; # To �� �����

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

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

Ofred = ("hello","dolly"); # ��������� ������� @fred �������� ��� �������� $fred = "right";

# �� �������� ������� "this is right[1]" $� = "this is $fred[l]"; t �����������, ���� "this is dolly" $x = "this is ${fred}[l]"; t ��������� (�������� ��������� ��������) $� = "this is $fred"."[1]"; # ��������� (������ ������) $� = "this is $fred\[l]"; t ��������� (������ �������� �������� �����)

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

@fred = ("�", "bb","ccc",1,2,3) ;

$�11 = "Mow for Sfred here!";

# $all �������� �������� "Now for a bb ccc 123 here!"

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

@fred = ("�","bb","ccc",1,2,3);

$�11 = "Now for @fred[2,3] here!";

# $all �������� �������� "Now for ccc 1 here!" $all = "Now for @fred[@fred[4,5]] here!"; � �� �� �����

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

����������

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

1. �������� ���������, ������� ������ ������ ��������� ��������, ������� � ��������� �������, � ������� ���� ������ � �������� �������. ���� �� ������� ������ �� ������, �� ���, ��������, ����� ����� �������� ����� ������, ����� ���������� ������ "����� �����" (� UNIX ��� Plan 9 ���, ��������, [Ctri+D], � � ������ �������� ���� ����� [Ctrl+Z]).

2. �������� ���������, ������� ������ �����, ����� ������ ��������� �������� (����������� � ��������� �������), ����� ���� ������� ���� �� ����� ������ � ������������ � ��������� ������.

3. �������� ���������, ������� ������ ������ �����, � ����� �������� � ������� �� ����� ��������� ������ �� ����� ������. ����� ������� ��������� ������� ������� @somearray, ��������� � ������ ��������� �������

srand;

(��� �������������� ��������� ��������� �����), � ����� �����������

rand(@somearray)

���, ��� ��������� ��������� ��������, ������� ������� ������� @ some-array.




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


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