Π Π°Π·ΡΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΡΠ»Π΅ΠΌΠ΅Π½Ρ Ρ ΡΡΠ° ΡΠ°ΠΊΠΆΠ΅ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΡΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡΠΌ Π½Π°ΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ, ΠΊΠΎΠ³Π΄Π° ΠΏΠ΅ΡΠ΅Π΄ ΡΡΡΠ»ΠΎΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΡΠ°Π²ΠΈΡΡΡ ΠΏΡΠ΅ΡΠΈΠΊΡ ΡΠΊΠ°Π»ΡΡΠ° $, Π° ΠΏΠΎΡΠ»Π΅ Π½Π΅Π΅ - ΠΊΠ»ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Ρ ΡΡΠ° Π² ΡΠΈΠ³ΡΡΠ½ΡΡ ΡΠΊΠΎΠ±ΠΊΠ°Ρ . Π‘ΡΡΠ»ΠΎΡΠ½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΌΠΎΠΆΠ΅Ρ Π·Π°ΠΊΠ»ΡΡΠ°ΡΡΡΡ Π² ΡΠΈΠ³ΡΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ:
${$ref2hash}{'ΠΊΠ»ΡΡ'} = 'Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅'; # ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ print $$ref2hash{'ΠΊΠ»ΡΡ'}; # Π΄ΠΎΡΡΡΠΏ ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Ρ ΡΡΠ°
Π Π΄ΡΡΠ³ΠΎΠΉ ΡΠΎΡΠΌΠ΅ ΡΠ°Π·ΡΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ ΡΡΡΠ»ΠΊΠΈ ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅ΠΉ ΡΡΡΠ»ΠΊΡ Π½Π° Ρ ΡΡ, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ "ΡΡΡΠ΅Π»ΠΊΠ°", ΠΏΠΎΡΠ»Π΅ ΠΊΠΎΡΠΎΡΠΎΠΉ Π² ΡΠΈΠ³ΡΡΠ½ΡΡ ΡΠΊΠΎΠ±ΠΊΠ°Ρ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΊΠ»ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Ρ ΡΡΠ°. ΠΠΎΡ ΡΠ°ΠΊ:
$ref2hash->{'ΡΠ΅ΡΠΌΠΈΠ½'} = 'ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅'; # Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΠ»Π΅ΠΌΠ΅Π½Ρ $value = $ref2hash->{'Π₯ΡΡ'}; # Π½Π°ΠΉΠ΄Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΊΠ»ΡΡΡ
ΠΡΠ»ΠΈ ΡΡΡΠ»ΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΠΊΠ»ΡΡ Ρ ΡΡΠ°, ΠΎΠ½Π°, ΠΊΠ°ΠΊ ΠΈ Π»ΡΠ±ΠΎΠΉ ΠΊΠ»ΡΡ Ρ ΡΡΠ°, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ Π² ΡΡΡΠΎΠΊΡ. Π’Π°ΠΊΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ ΡΡΡΠ»ΠΊΠΈ, Π½ΠΎ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΡΠ»ΡΠΆΠΈΡΡ ΠΎΡΠ»ΠΈΡΠ½ΡΠΌΠΈ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΌΠΈ ΠΊΠ»ΡΡΠ°ΠΌΠΈ Ρ ΡΡΠ°, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π°Π΄ΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π² ΠΏΠ°ΠΌΡΡΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, 'SCALAR(0x335b04)' ΠΈΠ»ΠΈ 'ARRAY(0x334dd8)'. ΠΡΠ»ΠΈ Π²ΡΠ΅-ΡΠ°ΠΊΠΈ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡΠ»ΠΊΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΊΠ»ΡΡΠ΅ΠΉ Ρ ΡΡΠ°, ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌ Tie::RefHash.
ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ "ΠΌΠ°ΡΡΠΈΠ²Π° ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ²" ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡΠΈ ΡΡΡΠ»ΠΎΡΠ½ΡΡ ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ : ΠΌΠ°ΡΡΠΈΠ²Ρ Ρ ΡΡΠ΅ΠΉ, Ρ ΡΡΠΈ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΠΈ Ρ ΡΡΠΈ Ρ ΡΡΠ΅ΠΉ. Π‘ΡΡΠ»ΠΎΡΠ½ΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π΄Π»Ρ ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΡΠ²ΡΠ·Π°Π½Π½ΡΡ Π΄Π°Π½Π½ΡΡ . ΠΠ»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΌΠ°ΡΡΠΈΠ² Ρ ΡΡΠ΅ΠΉ (Array of Hashes, AoH). ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΌΠ°ΡΡΠΈΠ²Π°, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΠ΅ Ρ ΡΡΠΈ, Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ Ρ ΡΠ°Π½ΡΡΡΡ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎ ΠΊΠ°ΠΊΠΎΠΌ-Π»ΠΈΠ±ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ΅:
my $AoH = [ # ΡΡΠ°ΠΏΡ "Π€ΠΎΡΠΌΡΠ»Ρ-1" '2006 Π³ΠΎΠ΄Π° {grandprix=>'ΠΠ°Ρ ΡΠ΅ΠΉΠ½Π°', date=>'2006.03.12'}, {grandprix=>'ΠΠ°Π»Π°ΠΉΠ·ΠΈΠΈ', date=>'2006.03.19'}, {grandprix=>'ΠΠ²ΡΡΡΠ°Π»ΠΈΠΈ', date=>'2006.04.02'}, {grandprix=>'Π‘Π°Π½-ΠΠ°ΡΠΈΠ½ΠΎ', date=>'2006.04.23'}, # ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅... ]; # Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°ΡΡ Ρ ΡΡ, Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΡΠ»Π°Π΅ΡΡΡ 4-ΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΌΠ°ΡΡΠΈΠ²Π° print "ΠΡΠ°Π½-ΠΏΡΠΈ $AoH->[3]->{grandprix} $AoH->[3]->{date}"; # Π²ΡΠ²Π΅Π΄Π΅Ρ: ΠΡΠ°Π½-ΠΏΡΠΈ Π‘Π°Π½-ΠΠ°ΡΠΈΠ½ΠΎ 2006.04.23
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ Π°ΡΡΠΎΡΠΈΠΈΡΠΎΠ²Π°ΡΡ Ρ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΠΊΠ»ΡΡΠΎΠΌ Ρ ΡΡΠ° ΡΠΏΠΈΡΠΎΠΊ ΡΠΊΠ°Π»ΡΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Ρ ΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² (Πash of Πrrays, HoA). ΠΡΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΡΠΈΠΌΠ΅Ρ Ρ ΡΡΠ° ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ², Π³Π΄Π΅ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ΅ Ρ ΡΡΠ° Ρ ΡΠ°Π½ΠΈΡΡΡ ΡΡΡΠ»ΠΊΠ° Π½Π° Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ Π°ΡΡΠΎΡΠΈΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ:
my $HoA = { # Π³ΠΎΠ΄Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ 1964 => ['SIMULA', 'BASIC', 'PL/1'], 1970 => ['Forth', 'Pascal', 'Prolog'], 1979 => ['Ada', 'Modula-2'], 1987 => ['Perl', 'Haskell', 'Oberon'], 1991 => ['Python', 'Visual Basic'] }; # Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°ΡΡ ΡΠΏΠΈΡΠΎΠΊ, Π°ΡΡΠΎΡΠΈΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Ρ 1987 Π³ΠΎΠ΄ΠΎΠΌ foreach my $language (sort @{$HoA->{1987}}) { print "$language "; } # Π²ΡΠ²Π΅Π΄Π΅Ρ: Haskell Oberon Perl
ΠΠ»Π΅ΠΌΠ΅Π½ΡΡ Ρ ΡΡΠ° ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡΡ Ρ ΡΠ°Π½ΠΈΡΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π΄ΡΡΠ³ΠΈΠ΅ Ρ ΡΡΠΈ, ΠΎΠ±ΡΠ°Π·ΡΡ Ρ ΡΡ Ρ ΡΡΠ΅ΠΉ (Πash of Πashes, HoH). ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Ρ ΡΡΠ° Ρ ΡΡΠ΅ΠΉ, Π³Π΄Π΅ Ρ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΠΏΠΎΠΈΡΠΊΠΎΠ²ΡΠΌ ΠΊΠ»ΡΡΠΎΠΌ Π°ΡΡΠΎΡΠΈΠΈΡΡΠ΅ΡΡΡ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΠΉ Ρ ΡΡ Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ ΠΎΠ± ΠΎΠ±ΡΠ΅ΠΊΡΠ΅:
my $HoH = { # Π°Π²ΡΠΎΡΡ ΠΈ Π³ΠΎΠ΄Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ 'Pascal' => {author=>'Niklaus Wirth', year=>1970}, 'Perl' => {year=>1987, author=>'Larry Wall'}, 'C' => {author=>'Dennis Ritchie', year=>1972} }; # Π² ΠΊΠ°ΠΊΠΎΠΌ Π³ΠΎΠ΄Ρ Π±ΡΠ» ΡΠΎΠ·Π΄Π°Π½ Pascal? print $HoH->{'Pascal'}->{'year'}; # Π²ΡΠ²Π΅Π΄Π΅Ρ: 1970 # ΠΊΡΠΎ ΡΠΎΠ·Π΄Π°Π» ΡΠ·ΡΠΊ Π‘ΠΈ? print $HoH->{'C'}->{'author'}; # Π²ΡΠ²Π΅Π΄Π΅Ρ: Dennis Ritchie
ΠΠΌΠ΅ΡΡΠΈΠ΅ΡΡ Π² Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π·Π°ΠΏΠΈΡΠΈ (record) ΠΈΠ»ΠΈ ΡΡΡΡΠΊΡΡΡΡ (struct), Π² Perl ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΡΡ Π² Π²ΠΈΠ΄Π΅ Ρ ΡΡΠ΅ΠΉ, Π² ΠΊΠΎΡΠΎΡΡΡ ΠΊΠ»ΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΈΠΌΠ΅Π½ ΠΏΠΎΠ»Π΅ΠΉ ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ ΠΏΠΎΠ»Π΅ΠΉ Π·Π°ΠΏΠΈΡΠΈ. ΠΠ»Ρ Π·Π°Π²Π΅ΡΡΠ°ΡΡΠ΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π½Π°Π±ΠΎΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ ΠΎ Π»ΡΠ΄ΡΡ . ΠΠ°ΠΆΠ΄Π°Ρ Π·Π°ΠΏΠΈΡΡ Π±ΡΠ΄Π΅Ρ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΠΌ Ρ ΡΡΠ΅ΠΌ, Π° ΡΡΡΠ»ΠΊΠΈ Π½Π° Π·Π°ΠΏΠΈΡΠΈ Π±ΡΠ΄ΡΡ Ρ ΡΠ°Π½ΠΈΡΡΡΡ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅. Π ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Π΄Π°ΡΡ ΡΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ Π² Π²ΠΈΠ΄Π΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π³ΠΎ Π³ΠΎΠ΄, ΠΌΠ΅ΡΡΡ ΠΈ Π΄Π΅Π½Ρ. ΠΠΎΡ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
my $family = [ # ΠΌΠ°ΡΡΠΈΠ² Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΠΎ ΡΠ΅ΠΌΡΠ΅ {name => 'ΠΠΈΡ Π°ΠΈΠ»', birthday => [1958, 11, 12]}, {name => 'ΠΡΠΈΠ½Π°', birthday => [1955, 03, 23]}, {name => 'ΠΠ°ΡΠ°', birthday => [1980, 07, 27]}, {name => 'ΠΠΈΡΠ°', birthday => [1981, 11, 28]}, {name => 'ΠΠ΅Π²', birthday => [1988, 06, 24]} ]; # Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°Π΅ΠΌ Π³ΠΎΠ΄ ΡΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΠ°ΡΠΈ: print "$family->[2]->{birthday}->[0]"; # ΠΈΠ»ΠΈ ΠΏΡΠΎΡΠ΅: print "$family->[2]{birthday}[0]"; # Π²ΡΠ²Π΅Π΄Π΅Ρ: 1980
ΠΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ Π»Π΅Π³ΠΊΠΎ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π² ΠΊΠ°ΠΆΠ΄ΡΡ Π·Π°ΠΏΠΈΡΡ Π½ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ - 'address', Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΎΡ ΡΠ°Π½ΠΈΠΌ ΡΡΡΠ»ΠΊΡ Π½Π° Π·Π°ΠΏΠΈΡΡ ΠΎ ΠΌΠ΅ΡΡΠ΅ ΠΏΡΠΎΠΆΠΈΠ²Π°Π½ΠΈΡ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ°. ΠΠ΄ΡΠ΅Ρ ΠΎΡΠΎΡΠΌΠΈΠΌ Π² Π²ΠΈΠ΄Π΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠ³ΠΎ Ρ ΡΡΠ° ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠΎΠ»Π΅ΠΉ:
# Π°Π΄ΡΠ΅Ρ Π² Π²ΠΈΠ΄Π΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠ³ΠΎ Ρ ΡΡΠ°, Π² $address - ΡΡΡΠ»ΠΊΠ° Π½Π° Π½Π΅Π³ΠΎ: $address = {country => 'Π ΠΎΡΡΠΈΡ', index => 641870}; # ΠΈ Ρ.Π΄. # Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΠΎΠ»Π΅ Π°Π΄ΡΠ΅ΡΠ° ΠΈ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ ΡΡΠ΄Π° $address: foreach my $person (@{$family}) { # ΠΏΡΠΎΠΏΠΈΡΠ΅ΠΌ Π²ΡΠ΅Ρ $person->{address} = $address; # ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ Π°Π΄ΡΠ΅ΡΡ } # Π²ΡΠ²Π΅Π΄Π΅ΠΌ ΠΏΠΎΡΡΠΎΠ²ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ Π΄Π»Ρ ΠΡΠΈΠ½Ρ print "$family->[1]->{address}->{index}\n"; # 641870
ΠΠ° ΡΠΈΡ. 11.5 ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π° ΡΡΡΠ»ΠΎΡΠ½Π°Ρ ΡΡΡΡΠΊΡΡΡΠ° Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ»ΡΡΠΈΠ»Π°ΡΡ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΏΠΎ ΡΡΡΠ»ΠΊΠ°ΠΌ ΠΊΠΎ Π²ΡΠ΅ΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ ΡΡΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½Π°Ρ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ $family.
Π ΠΈΡ. 11.5. ΠΡΠΈΠΌΠ΅Ρ ΡΡΡΠ»ΠΎΡΠ½ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΡΠ»ΠΎΠΊ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ : ΡΠ²ΡΠ·Π½ΡΠ΅ ΡΠΏΠΈΡΠΊΠΈ, Π΄Π΅ΡΠ΅Π²ΡΡ ΠΈ Π³ΡΠ°ΡΡ. ΠΠΎΠ΄ΡΡΠΎΠΆΠΈΠ²Π°Ρ Π²ΡΠ΅ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ ΠΎ ΡΡΡΠ»ΠΊΠ°Ρ , Π² ΡΠ°Π±Π»ΠΈΡΠ΅ 11.1 ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡ ΡΠ²ΠΎΠ΄Π½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡΡ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ ΡΠΎ ΡΡΡΠ»ΠΊΠ°ΠΌΠΈ.
Π’Π°Π±Π»ΠΈΡΠ° 11.1. Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΡΠΎ ΡΡΡΠ»ΠΊΠ°ΠΌΠΈ Π½Π° Π΄Π°Π½Π½ΡΠ΅Π‘ΠΊΠ°Π»ΡΡΠΠ°ΡΡΠΈΠ²Π₯ΡΡΠΠ·ΡΡΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ$sref = \$scalar;$aref = \@array;$href = \%hash;Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ$sref = \'ΠΠΈΡΠ΅ΡΠ°Π»';$aref = [$a, $b];$href = {$a => $b};ΠΠΎΡΡΡΠΏ ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΡΡΠ»ΠΊΠΈ${$sref} [email protected]{$aref} @$aref%{$href} %$hrefΠΠΎΡΡΡΠΏ ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΡΡΠ»ΠΊΠΈ$aref-> [$index] ${$aref}[$index]$href->{$key} ${$href}{$key}ΠΠΎΡΡΡΠΏ ΠΊ ΡΡΠ΅Π·Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΡΡΠ»ΠΊΠΈ@{$aref}[$i1, $i2]@{$href}{$k1, $k2}ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ref($ref) Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΡΡΠ»ΠΊΠΈSCALARARRAYHASH
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡΡΠΈΠ΅ Π½Π° Perl Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ°Π³Ρ ΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΠΎΠ»ΡΡΠΈΠ΅ΠΉ Π² ΡΡΡΠΎΠΊΠ°Ρ ΡΠΊΠ°Π»ΡΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ². ΠΠ½ΠΎΠ³Π΄Π° ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π²ΠΊΠ»ΡΡΠΈΡΡ Π² ΡΡΡΠΎΠΊΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΡΠ»ΠΎΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π»ΡΠ±ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ. Π§ΡΠΎΠ±Ρ Π²ΠΊΠ»ΡΡΠΈΡΡ Π² ΡΡΡΠΎΠΊΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΊΠ°Π»ΡΡΠ½ΠΎΠ³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π΅Π³ΠΎ Π½Π°Π΄ΠΎ Π·Π°ΠΊΠ»ΡΡΠΈΡΡ Π² ΠΊΡΡΠ³Π»ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ ΠΈ Π²Π·ΡΡΡ Π½Π° Π½Π΅Π³ΠΎ ΡΡΡΠ»ΠΊΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ΅ΠΉ \, Π° Π·Π°ΡΠ΅ΠΌ ΡΠ°Π·ΡΠΌΠ΅Π½ΠΎΠ²Π°ΡΡ ΡΡΡΠ»ΠΎΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ ΡΠΊΠ°Π»ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠ΅ΡΠΈΠΊΡΠ° $. ΠΠΎΡ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
$s = "localtime() ${\($x=localtime)} Π² ΡΠΊΠ°Π»ΡΡΠ½ΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅"; # Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ: 'Sun Mar 26 20:17:36 2006'
Π§ΡΠΎΠ±Ρ Π²ΠΊΠ»ΡΡΠΈΡΡ Π² ΡΡΡΠΎΠΊΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠ΅Π³ΠΎ ΡΠΏΠΈΡΠΎΠΊ, Π΅Π³ΠΎ Π½Π°Π΄ΠΎ Π·Π°ΠΊΠ»ΡΡΠΈΡΡ Π² ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ, ΠΎΡΠ³Π°Π½ΠΈΠ·ΡΡ ΡΡΡΠ»ΠΊΡ Π½Π° Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ², Π° ΠΏΠΎΡΠΎΠΌ ΡΠ°Π·ΡΠΌΠ΅Π½ΠΎΠ²Π°ΡΡ ΡΡΡΠ»ΠΎΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ ΠΌΠ°ΡΡΠΈΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠ΅ΡΠΈΠΊΡΠ° @. ΠΠΎΡ ΡΠ°ΠΊ:
$a = "localtime() @{[localtime()]} Π² ΡΠΏΠΈΡΠΎΡΠ½ΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅"; # Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ: '36 17 20 26 2 106 0 84 1'
Π‘ΡΡΠ»ΠΊΠΈ, ΠΎ ΠΊΠΎΡΠΎΡΡΡ Π΄ΠΎ ΡΡΠΎΠ³ΠΎ ΡΠ»Π° ΡΠ΅ΡΡ, Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΠΆΠ΅ΡΡΠΊΠΈΠΌΠΈ ΡΡΡΠ»ΠΊΠ°ΠΌΠΈ. ΠΠ΅ΡΡΠΊΠ°Ρ ΡΡΡΠ»ΠΊΠ° (hard reference) - ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, Ρ ΡΠ°Π½ΡΡΠΈΠΉ Π² ΠΏΠ°ΠΌΡΡΠΈ Π°Π΄ΡΠ΅Ρ ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠ° ΠΈ ΡΠΈΠΏ Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. Π Perl ΠΈΠΌΠ΅Π΅ΡΡΡ Π΅ΡΠ΅ ΠΎΠ΄Π½Π° ΡΠ°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡΡ ΡΡΡΠ»ΠΎΠΊ, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΡΡΡΠ»ΠΊΠ°ΠΌΠΈ. Π‘ΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΡΡΠ»ΠΊΠ° (symbolic reference) - ΡΡΠΎ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Ρ ΡΠ°Π½ΠΈΡΡΡ Π² ΡΠΊΠ°Π»ΡΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ· ΡΠ΅Π±Ρ ΠΈΠΌΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ:
$referent1 = 'Π Π΅ΡΠ΅ΡΠ΅Π½Ρ'; # ΠΎΠ±ΡΠ΅ΠΊΡ ΡΡΡΠ»ΠΊΠΈ $symlink = 'referent' . 1; # ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΡΡΠ»ΠΊΠ° # Π΄ΠΎΡΡΡΠΏ ΠΏΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΡΡΠ»ΠΊΠ΅ ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° print ${$symlink}; # Π±ΡΠ΄Π΅Ρ Π²ΡΠ²Π΅Π΄Π΅Π½ΠΎ: 'Π Π΅ΡΠ΅ΡΠ΅Π½Ρ'
Π‘ΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅ΠΆΠ΅ ΠΈ Π±ΡΠ²Π°ΡΡ Π½ΡΠΆΠ½Ρ, ΠΊΠΎΠ³Π΄Π° ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΈΠΌΠ΅Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π² Π²ΠΈΠ΄Π΅ ΡΡΡΠΎΠΊ, ΡΡΠΎΠ±Ρ Π·Π°ΡΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠΈΡ ΡΡΡΠ»ΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΊ ΡΡΡΠ΄Π½ΠΎ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠΌ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌ, ΠΏΠΎΡΡΠΎΠΌΡ Π»ΡΡΡΠ΅ Π·Π°ΠΏΡΠ΅ΡΠ°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠΈΡ ΡΡΡΠ»ΠΎΠΊ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠ°Π³ΠΌΡ use strict 'refs'.
Π ΡΡΠΎΠΉ Π»Π΅ΠΊΡΠΈΠΈ ΠΈΠ·ΡΡΠ΅Π½Ρ ΡΡΡΠ»ΠΊΠΈ ΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π° ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΡΠ»ΠΎΠΊ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ . Π‘ΡΡΠ»ΠΊΠΈ Π΄Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ ΠΌΠΎΡΠ½ΡΠ΅ ΠΈ Π³ΠΈΠ±ΠΊΠΈΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ. ΠΠΎΡΡΠΎΠΌΡ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ ΡΠ°Π±ΠΎΡΡ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ Π² Perl ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Ρ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΡΠ»ΠΎΠΊ, ΠΈ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ ΡΡΡΠ»ΠΊΠ°ΠΌ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π»Π΅ΠΊΡΠΈΡΡ ΠΏΡΠΈ ΠΈΠ·ΡΡΠ΅Π½ΠΈΠΈ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΡΠ½ΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΠ΅ΠΊΡΠΈΡ 12. ΠΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
Π ΡΡΠΎΠΉ Π»Π΅ΠΊΡΠΈΠΈ Π±ΡΠ΄ΡΡ ΠΈΠ·ΡΡΠ΅Π½Ρ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ - Π΅Π΄ΠΈΠ½ΠΈΡΡ ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π½Π° Perl, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅ΡΡ ΡΠ²ΠΎΠΈ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ: Π² ΡΠΎΡΠΌΠ°Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΈ Π²ΡΠ·ΠΎΠ²Π°, Π² ΡΠΏΠΎΡΠΎΠ±Π°Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², Π² Π²Π°ΡΠΈΠ°Π½ΡΠ°Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π² ΡΡΠΎΠΉ Π»Π΅ΠΊΡΠΈΠΈ Π±ΡΠ΄ΡΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Ρ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΈΠΌΠ΅Π½ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π² Perl-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅.