ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎ ΡΠΎΡΠΌΠ°ΡΠ°Ρ ΠΈ ΠΎΡΡΠ΅ΡΠ°Ρ Π² Perl ΠΌΠΎΠΆΠ½ΠΎ ΡΠ·Π½Π°ΡΡ ΠΈΠ· ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, ΠΎΠ±ΡΠ°ΡΠΈΠ²ΡΠΈΡΡ Π·Π° ΠΏΠΎΠΌΠΎΡΡΡ ΠΊ ΡΡΠΈΠ»ΠΈΡΠ΅
perldoc perlform
Π Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ Π»Π΅ΠΊΡΠΈΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π°ΠΊΠΎΠ½ΡΠ΅Π½Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ (Ρ ΠΎΠ±ΡΠ°Π·ΡΠΎΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ ), Π²ΡΠ²ΠΎΠ΄ΡΡΠ΅ΠΉ ΠΎΡΡΠ΅Ρ ΠΎ ΠΊΠ½ΠΈΠ³Π°Ρ ΠΏΠΎ ΡΠ·ΡΠΊΡ Perl.
open my $report, '>', '/report.txt' or die; $old_handle = select $out; # Π²ΡΠ±ΡΠ°ΡΡ ΠΏΠΎΡΠΎΠΊ Π΄Π»Ρ ΠΎΡΡΠ΅ΡΠ° select $report; $^ = 'HEAD'; $~ = 'REPORT'; # ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΎΡΠΌΠ°ΡΠΎΠ² Π΄Π»Ρ ΠΎΡΡΠ΅ΡΠ° while(<DATA>) { # ΡΡΠ΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Π΄Π°Π½Π½ΡΡ ($authors, $title, $year, $nick) = split ':'; write $report; # Π²ΡΠ²ΠΎΠ΄ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΎΡΡΠ΅ΡΠ° } close $report or die; # ΡΠΎΡΠΌΠ°Ρ Π΄Π»Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΡΡΡΠ°Π½ΠΈΡΡ format HEAD = ΠΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΏΠΎ ΡΠ·ΡΠΊΡ Perl ΠΈΠ·Π΄Π°ΡΠ΅Π»ΡΡΡΠ²Π° O'Reilly ΠΠΈΡΡ @# $% ---------------+--------------------+----+------------ ΠΠ²ΡΠΎΡΡ | ΠΠ°Π³Π»Π°Π²ΠΈΠ΅ |ΠΠΎΠ΄ | ΠΡΠΎΠ·Π²ΠΈΡΠ΅ ---------------+--------------------+----+------------ . format REPORT = ^<<<<<<<<<<<<<<|^<<<<<<<<<<<<<<<<<<<|@###|@>>>>>>>>>>> $authors, $title, $year, $nick ^<<<<<<<<<<<<<<|^<<<<<<<<<<<<<<<<<<<| | ~~ $authors, $title ---------------+--------------------+----+------------ . __DATA__ Cozens S.:Advanced Perl Programming,2nd ed.:2005:Panther Book Friedl J.E.F.:Mastering Regular Expressions:1997:Owls Book ...
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΡΠ°Π±ΠΎΡΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π±ΡΠ΄Π΅Ρ ΡΠ°ΠΊΠΎΠΉ ΠΎΡΡΠ΅Ρ, ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½Π½ΡΠΉ Π² ΡΠ°ΠΉΠ»Π΅ report.txt:
ΠΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΏΠΎ ΡΠ·ΡΠΊΡ Perl ΠΈΠ·Π΄Π°ΡΠ΅Π»ΡΡΡΠ²Π° O'Reilly ΠΠΈΡΡ 1 ---------------+--------------------+----+------------ ΠΠ²ΡΠΎΡΡ | ΠΠ°Π³Π»Π°Π²ΠΈΠ΅ |ΠΠΎΠ΄ | ΠΡΠΎΠ·Π²ΠΈΡΠ΅ ---------------+--------------------+----+------------ Cozens S. |Advanced Perl |2005|Panther Book |Programming,2nd ed. | | ---------------+--------------------+----+------------ Friedl J.E.F. |Mastering Regular |1997| Owls Book |Expressions | | ---------------+--------------------+----+------------ Schwartz R.L., |Learning Perl, 4th |2005| Llama Book Phoenix T., |ed. | | brian d foy | | | ---------------+--------------------+----+------------
ΠΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΈΠ·ΡΡΠ΅Π½Π½ΡΠ΅ Π² ΡΡΠΎΠΉ Π»Π΅ΠΊΡΠΈΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π° ΠΎΡΡΠ΅ΡΠΎΠ² Π½Π΅ ΠΌΠΎΠ³ΡΡ ΡΡΠ°Π²Π½ΠΈΡΡΡΡ Ρ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΠΏΠΎΡΡΡΠΎΠΈΡΠ΅Π»ΡΠΌΠΈ ΠΎΡΡΠ΅ΡΠΎΠ², Π½ΠΎ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠ»ΡΡΠ°ΡΡ Π±ΡΠ²Π°Π΅Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²ΡΡ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ Π² Π²ΠΈΠ΄Π΅ ΠΏΡΠΎΡΡΡΡ ΠΎΡΡΠ΅ΡΠΎΠ², ΠΊΠΎΡΠΎΡΠΎΠ΅ Π² Perl Π΄Π΅Π»Π°Π΅ΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ, ΠΏΡΠΎΡΡΠΎ ΠΈ Π½Π°Π³Π»ΡΠ΄Π½ΠΎ. ΠΡΠ° Π»Π΅ΠΊΡΠΈΡ Π±ΡΠ»Π° "Π»ΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΎΡΡΡΡΠΏΠ»Π΅Π½ΠΈΠ΅ΠΌ" ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ ΠΊΠ°ΠΊ Π½Π°ΡΠ°ΡΡ ΡΠ³Π»ΡΠ±Π»Π΅Π½Π½ΠΎΠ΅ ΠΈΠ·ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ΅Ρ Π½ΠΈΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΡΠ·ΡΠΊΠ΅ Perl.
ΠΠ΅ΠΊΡΠΈΡ 11. Π‘ΡΡΠ»ΠΊΠΈ
Π ΡΡΠΎΠΉ Π»Π΅ΠΊΡΠΈΠΈ Π±ΡΠ΄ΡΡ ΠΈΠ·ΡΡΠ΅Π½Ρ ΡΡΡΠ»ΠΊΠΈ ΠΈ ΡΡΡΠ»ΠΎΡΠ½ΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ³ΡΠ°ΡΡ ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΡΡ ΡΠΎΠ»Ρ Π² Perl, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅ΡΠ½ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ, ΠΌΠ°ΡΡΠΈΠ²Ρ Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ: ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ, ΡΠΏΠΈΡΠΊΠΈ, Π΄Π΅ΡΠ΅Π²ΡΡ, Π³ΡΠ°ΡΡ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠΌΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎ ΡΡΡΠ»ΠΊΠ°ΠΌΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π»Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² Perl.
Π¦Π΅Π»Ρ Π»Π΅ΠΊΡΠΈΠΈ: Π½Π°ΡΡΠΈΡΡΡΡ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΡΠΎ ΡΡΡΠ»ΠΊΠ°ΠΌΠΈ, ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ ΡΡΡΠ»ΠΎΠΊ ΠΈ ΡΡΡΡΠΊΡΡΡΠ°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ , ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠΌΠΈ Π½Π° ΡΡΡΠ»ΠΊΠ°Ρ , ΡΡΠΎΠ±Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΠΈΡ ΠΏΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π·Π°Π΄Π°Ρ ΡΠΎ ΡΠ»ΠΎΠΆΠ½ΡΠΌΠΈ ΡΡΡΡΠΊΡΡΡΠ°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ .
Π‘ΡΡΠ»ΠΊΠΈ ΡΠ²Π½ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠ²Π½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π²ΠΎ Π²ΡΠ΅Ρ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π³ΠΈΠ±ΠΊΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ Π½Π΅ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ. Π‘ΡΡΠ»ΠΊΠΈ ΡΠ²Π»ΡΡΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠΊΠ°Π»ΡΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ ΡΠ·ΡΠΊΠ° Perl, Π½Π°ΡΡΠ΄Ρ Ρ ΡΠΈΡΠ»Π°ΠΌΠΈ ΠΈ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ. Π‘ΡΡΠ»ΠΊΠ° (reference) - ΡΡΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΎΠΌ, Π³Π΄Π΅ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°. ΠΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΡΡΠ»ΠΊΠΈ (referent). Π‘ΡΡΠ»ΠΊΠ° - ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΊ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π½Π΅ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, Π° ΠΏΠΎ Π΅Π΅ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΏΠ°ΠΌΡΡΠΈ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ , Π² Perl ΡΡΡΠ»ΠΊΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ Π½Π°Π΄Π΅ΠΆΠ½ΠΎ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°Π±ΠΎΡΠΈΡΡΡΡ ΠΎ ΡΠ²Π½ΠΎΠΌ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΠΈΠ· ΠΏΠ°ΠΌΡΡΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΡΡΠ»ΠΎΠΊ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΠ°Ρ ΠΏΠ°ΠΌΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅ΡΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΌ ΡΠ±ΠΎΡΡΠΈΠΊΠΎΠΌ ΠΌΡΡΠΎΡΠ°, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΡΡΠ»ΠΎΠΊ ΠΏΠ΅ΡΠ΅ΡΡΠ°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ (ΡΠΎ Π΅ΡΡΡ ΠΊΠΎΠ³Π΄Π° Π½Π° Π½ΠΈΡ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½ΠΈ ΠΎΠ΄Π½Π° ΡΡΡΠ»ΠΊΠ°). ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π²Π·ΡΡΠΈΡ ΡΡΡΠ»ΠΊΠΈ, ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅ΠΌΠ°Ρ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΠΊΠΎΡΠΎΠΉ ΡΠ΅ΡΡΠΎΠΉ (backslash), ΠΊΠΎΡΠΎΡΠ°Ρ ΡΡΠ°Π²ΠΈΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ ΡΡΡΠ»ΠΊΠΈ. Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΡΡΠ»ΠΊΡ Π½Π° ΡΠΊΠ°Π»ΡΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π΅Π΅ Π² Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ:
my $scalar = 'Π‘ΠΊΠ°Π»ΡΡ'; # ΠΎΠ±ΡΠ΅ΠΊΡ ΡΡΡΠ»ΠΊΠΈ my $ref2scalar = \$scalar; # ΡΡΡΠ»ΠΊΠ° Π½Π° ΡΠΊΠ°Π»ΡΡ
ΠΠ° ΡΠΈΡ. 11.1 ΠΏΠΎΠΊΠ°Π·Π°Π½ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΊΠ°Π»ΡΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² Π΄ΡΡΠ³ΠΎΠΉ ΡΠΊΠ°Π»ΡΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ.
Π ΠΈΡ. 11.1. Π‘ΡΡΠ»ΠΊΠ° Π½Π° ΡΠΊΠ°Π»ΡΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
ΠΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ '\' ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ°ΡΡ ΡΡΡΠ»ΠΊΡ Π½Π° Π»ΡΠ±ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π° Π»ΠΈΡΠ΅ΡΠ°Π» ΠΈΠ»ΠΈ Π½Π° Π»ΡΠ±ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ ΡΡΠΎΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΡΡΠ»ΠΊΠΈ Π½Π΅Π»ΡΠ·Ρ Π±ΡΠ΄Π΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΡΠΈΡΠ»ΡΠ΅ΡΡΡ, Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ Π² Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΏΠ°ΠΌΡΡΠΈ, ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΊΠΎΡΠΎΡΡΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
my $ref2literal = \'ΠΠΈΡΠ΅ΡΠ°Π»'; # ΡΡΡΠ»ΠΊΠ° Π½Π° Π»ΠΈΡΠ΅ΡΠ°Π» my $ref2expression = \($n1*$n2); # ΡΡΡΠ»ΠΊΠ° Π½Π° Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅
ΠΠ½ΠΎΠ½ΠΈΠΌΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ - ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π½Π΅ ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Π½ΠΈ Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΊΠΎΡΠΎΡΡΠΌ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅. Π‘ΡΡΠ»ΠΊΠ° Π²ΡΠ΅Π³Π΄Π° ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°: ΡΠΊΠ°Π»ΡΡ, ΠΌΠ°ΡΡΠΈΠ², Ρ ΡΡ, ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ (ΠΈΠ»ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠ°Π±Π»ΠΈΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΎ ΠΊΠΎΡΠΎΡΡΡ ΡΠ΅ΡΠΈ ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡΠ»ΠΎ). ΠΠ° ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠΈΠΏ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΡΡΠ»ΠΊΠ°, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ·Π½Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ref(), ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΡΠΎΠΊΡ, ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΡΡ ΡΠΈΠΏ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΡΡΠ»ΠΊΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
print ref($ref2scalar); # Π²ΡΠ²Π΅Π΄Π΅Ρ: 'SCALAR'
Π ΡΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ, Π΅ΡΠ»ΠΈ Π²ΡΠ²Π΅ΡΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎΠΉ ΡΡΡΠ»ΠΊΠΈ? ΠΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΎ Π² ΡΡΡΠΎΠΊΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ ΡΠΈΠΏ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΡΡΠ»ΠΊΠΈ ΠΈ Π΅Π³ΠΎ Π°Π΄ΡΠ΅Ρ Π² Π²ΠΈΠ΄Π΅ ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠΈΡΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
print $ref2scalar; # Π²ΡΠ²Π΅Π΄Π΅Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ: 'SCALAR(0x335b04)'
ΠΠ±ΡΠ°ΡΠ½ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ Π² ΡΡΡΠ»ΠΊΡ ΡΡΠΎ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π°Π΄ΡΠ΅ΡΠ° Π½Π΅ ΡΠ΄Π°ΡΡΡΡ.
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΡΡΠ»ΠΊΠ°, Π½ΡΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ°Π·ΡΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ (dereference). ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ°Ρ ΡΡΡΠ»ΠΊΡ, Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΈΠ³ΡΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ ΠΈ ΠΏΠ΅ΡΠ΅Π΄ Π½Π΅ΠΉ ΡΡΠ°Π²ΠΈΡΡΡ Π½ΡΠΆΠ½ΡΠΉ ΡΠ°Π·ΡΠΌΠ΅Π½ΠΎΠ²ΡΠ²Π°ΡΡΠΈΠΉ ΠΏΡΠ΅ΡΠΈΠΊΡ: $ Π΄Π»Ρ ΡΠΊΠ°Π»ΡΡΠ°, @ Π΄Π»Ρ ΠΌΠ°ΡΡΠΈΠ²Π°, % Π΄Π»Ρ Ρ ΡΡΠ°, & Π΄Π»Ρ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. (ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΠΏΠΎΡΠ»Π΅ ΡΠ°Π·ΡΠΌΠ΅Π½ΠΎΠ²ΡΠ²Π°ΡΡΠ΅Π³ΠΎ ΠΏΡΠ΅ΡΠΈΠΊΡΠ°, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠ΅Π³ΠΎ ΡΠΈΠΏ Ρ ΡΠ°Π½ΡΡΠ΅Π³ΠΎΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π²ΠΌΠ΅ΡΡΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ°Ρ ΡΡΡΠ»ΠΊΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΈΠ»ΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠ΅Π΅ ΡΡΡΠ»ΠΊΡ.) ΠΡΠ»ΠΈ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎΡΡΠΈ Π² ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ, Ρ ΡΠ°Π½ΡΡΡΡ ΡΡΡΠ»ΠΊΡ, Π² ΡΠΈΠ³ΡΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ Π·Π°ΠΊΠ»ΡΡΠ°ΡΡ. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅ΡΡ ΡΠ°Π·ΡΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ ΡΡΡΠ»ΠΎΠΊ Π½Π° ΡΠΊΠ°Π»ΡΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ:
print "${$ref2scalar} "; # ΠΈΠ»ΠΈ: $$ref2scalar print "${$ref2literal} "; # ΠΈΠ»ΠΈ: $$ref2literal print "${$ref2expression} "; # ΠΈΠ»ΠΈ: $$ref2expression
ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΊΠ°Π»ΡΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΡΠΈ Π΄ΠΎΡΡΡΠΏΠ΅ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅, Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡΡ, Π½ΠΎ ΠΏΠΎΠΏΡΡΠΊΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΡΠ»ΠΊΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π»ΠΈΡΠ΅ΡΠ°Π» Π²ΡΠ·ΠΎΠ²Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ("Modification of a read-only value attempted"):
${$ref2scalar} = 'ΠΠΎΠ²ΡΠΉ ΡΠΊΠ°Π»ΡΡ'; # Π²ΠΏΠΎΠ»Π½Π΅ Π·Π°ΠΊΠΎΠ½Π½ΠΎ ${$ref2literal} = 'ΠΠΎΠ²ΡΠΉ Π»ΠΈΡΠ΅ΡΠ°Π»'; # ΠΠ¨ΠΠΠΠ!!!
ΠΠΎΠ³Π΄Π° Π½Π° ΠΊΠ°ΠΊΠΎΠ΅-ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΡΠ»Π°Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠ»ΠΎΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , ΡΠΎ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ ΡΡΠΎΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π»ΡΠ±ΠΎΠΉ ΠΈΠ· Π½ΠΈΡ . ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π½Π° Π½Π΅Π³ΠΎ ΠΈΠΌΠ΅Π΅ΡΡΡ Ρ ΠΎΡΡ Π±Ρ ΠΎΠ΄Π½Π° ΡΡΡΠ»ΠΊΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
my $ref2scalar = \$scalar; # ΡΡΡΠ»ΠΊΠ° Π½Π° ΡΠΊΠ°Π»ΡΡ my $one_more_ref = $ref2scalar; # ΠΊΠΎΠΏΠΈΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΡΠΊΠ°Π»ΡΡ # Π±ΡΠ΄Π΅Ρ Π²ΡΠ²Π΅Π΄Π΅Π½ΠΎ ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ $scalar: print "${$ref2scalar} ${$one_more_ref}";
ΠΠ° ΡΠΈΡ. 11.2 ΠΏΠΎΠΊΠ°Π·Π°Π½Π° ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠ»ΠΎΠΊ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° ΠΎΠ΄Π½Ρ ΡΠΊΠ°Π»ΡΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ.
Π ΠΈΡ. 11.2. ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠ»ΠΎΠΊ Π½Π° ΡΠΊΠ°Π»ΡΡ
ΠΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ $ref2scalar ΠΏΠ΅ΡΠ΅ΡΡΠ°Π½Π΅Ρ ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° $scalar (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΡΠ»Π΅ undef $ref2scalar), ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ $scalar Π²ΡΠ΅ Π΅ΡΠ΅ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ ΡΠ΅ΡΠ΅Π· ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ $one_more_ref.
ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΡΡΠ»ΠΊΠΈ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΡΠ»ΠΊΠ° (ΠΊΠΎΡΠ²Π΅Π½Π½Π°Ρ ΡΡΡΠ»ΠΊΠ°) Π½Π° Π΄ΡΡΠ³ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΠΎΠΆΠ΅ Π½Π° ΡΡΡΠ»ΠΊΡ. Π‘ΡΡΠ»ΠΊΠ° Π΄Π°ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΡΡΠ»ΠΊΡ Π½Π° ΡΠ°ΠΌΡ ΡΠ΅Π±Ρ! Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΡΠ΅ΠΏΠΎΡΠΊΡ ΡΡΡΠ»ΠΎΠΊ Π»ΡΠ±ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
$value = 'ΠΠΎΠ»Π΅Π·Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅'; $ref1 = \$value; # ΡΡΡΠ»ΠΊΠ° Π½Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ $ref2 = \$ref1; # ΡΡΡΠ»ΠΊΠ° Π½Π° ΡΡΡΠ»ΠΊΡ Π½Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ $ref3 = \$ref2; # ΡΡΡΠ»ΠΊΠ° Π½Π° ΡΡΡΠ»ΠΊΡ Π½Π° ΡΡΡΠ»ΠΊΡ Π½Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
ΠΠΎΠΆΠ½ΠΎ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠ΅ ΠΊΠΎΡΠ²Π΅Π½Π½ΡΠ΅ ΡΡΡΠ»ΠΊΠΈ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π· ΠΏΡΠΈΠΌΠ΅Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π²Π·ΡΡΠΈΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠ°ΠΊΡΡ ΡΠ΅ΠΏΠΎΡΠΊΡ ΡΡΡΠ»ΠΎΠΊ:
$ref_chain = \\\$value; # ΡΠ΅ΠΏΠΎΡΠΊΠ° ΠΈΠ· ΡΡΠ΅Ρ ΡΡΡΠ»ΠΎΠΊ
ΠΠ»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΏΠΎ ΡΠ°ΠΊΠΎΠΉ ΡΠ΅ΠΏΠΎΡΠΊΠ΅ ΡΡΡΠ»ΠΎΠΊ ΠΊ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΡΠ°Π·ΡΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π½ΡΠΆΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΡΠ°Π·. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΠ΅ΠΏΠΎΡΠΊΠ΅ ΠΈΠ· ΡΡΠ΅Ρ ΡΡΡΠ»ΠΎΠΊ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ΅Ρ ΠΏΡΠ΅ΡΠΈΠΊΡΠΎΠ² $ ΠΌΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΡΡΠ»ΠΎΡΠ½ΡΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ, Π° Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠ΅ΡΠΈΠΊΡ Π½ΡΠΆΠ΅Π½ Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ:
# Π²ΡΠ²Π΅Π΄Π΅ΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ΅Π· $ref3: print ${${${$ref3}}}; # ΠΈΠ»ΠΈ ΠΊΠΎΡΠΎΡΠ΅: print $$$$ref3; # ΠΈΠ»ΠΈ ΡΠ΅ΡΠ΅Π· $ref_chain: print $$$$ref_chain;