����� 3� ���� �����:
����������� ������������� ���������� �������� ��� ��������� � ������� ��������� �������� ��������� � ��������� ��������� <STDIN> ��� ������ ������������ �������� ���������� ������� � ��������� ������������ � ������ ������ � ��� ������������� ��������� ������. ������ -- ����������, ������� �������� ������. ������ ������� ������� � ��� ��������� ��������� ���������� � ����������� ��������� ���������. �������� � ������ �����������, �.�. ����������� � ������������ ������������������, �������� �� �������� �������� � ��������. ������� ����� ����� ����� ����� ���������. ���������� ��������� ������ �� ����� ��������� ������, ����� ��� ����������� ��������� ����� ��������� ��� �������� ������. ��� ��� ���� ������������� �������� � 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. |