ΠΠ΅ΠΊΡΠΈΡ 12. ΠΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
Π ΡΡΠΎΠΉ Π»Π΅ΠΊΡΠΈΠΈ Π±ΡΠ΄ΡΡ ΠΈΠ·ΡΡΠ΅Π½Ρ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ - Π΅Π΄ΠΈΠ½ΠΈΡΡ ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π½Π° Perl, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅ΡΡ ΡΠ²ΠΎΠΈ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ: Π² ΡΠΎΡΠΌΠ°Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΈ Π²ΡΠ·ΠΎΠ²Π°, Π² ΡΠΏΠΎΡΠΎΠ±Π°Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², Π² Π²Π°ΡΠΈΠ°Π½ΡΠ°Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π² ΡΡΠΎΠΉ Π»Π΅ΠΊΡΠΈΠΈ Π±ΡΠ΄ΡΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Ρ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΈΠΌΠ΅Π½ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π² Perl-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅.
Π¦Π΅Π»Ρ Π»Π΅ΠΊΡΠΈΠΈ: ΠΏΠΎΠ»ΡΡΠΈΡΡ Π·Π½Π°Π½ΠΈΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π° Perl ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΡΡΠΈΡΡΠ²Π°Ρ ΡΠ²ΠΎΠ΅ΠΎΠ±ΡΠ°Π·ΠΈΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π² Π½Π΅ΠΌ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. ΠΠ°ΡΡΠΈΡΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌΠΈ. ΠΠ·ΡΡΠΈΡΡ ΡΠΏΠΎΡΠΎΠ±Ρ Π·Π°Π΄Π°Π½ΠΈΡ ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ .
ΠΠ»Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΠΌΠΈΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ ΡΠΎΠ·Π΄Π°Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΡΡΡΠ½ΠΎΡΡΠΈ Π² Π²ΠΈΠ΄Π΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ ΡΠΎΠΌΡ ΠΊΠ°ΠΊ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΡΡΠ΅ΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΡ ΠΈ ΡΠ²Π»Π΅Π½ΠΈΡ. ΠΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π³Π»Π°Π³ΠΎΠ»Ρ Π΄Π»Ρ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΡΠΈΠΈ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΡ ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΈΠ»ΠΈ Π΄Π»Ρ Π·Π°ΠΌΠ΅Π½Ρ Π΄Π»ΠΈΠ½Π½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ. ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Π° Π² ΡΠ»ΠΎΠ²Π°ΡΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ: "ΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ - ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π½Π°Π±ΠΎΡΠ° Π΄Π°Π½Π½ΡΡ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΡΠ΅ΠΌ ΠΈΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΠΈ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ". ΠΠ°ΡΠ΅ΠΌ Π²ΡΠ΅, ΠΊΡΠΎ Π·Π½Π°Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Π°, ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΈΠΌ Π΄Π»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ: "ΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠ½ΠΈΠ³ ΠΏΠΎ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π½ΠΈΡ Π½Π°Π·Π²Π°Π½ΠΈΠΉ".
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ - ΡΡΠΎ ΡΡΠ΅Π΄ΡΡΠ²ΠΎ ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ°ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ "ΡΠ²Π΅ΡΡ Ρ Π²Π½ΠΈΠ·", ΠΊΠΎΠ³Π΄Π° ΡΠ½Π°ΡΠ°Π»Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ ΠΊΡΡΠΏΠ½ΡΠ΅ ΡΠ°ΡΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π±Π΅Π· ΡΡΠΎΡΠ½Π΅Π½ΠΈΡ Π΄Π΅ΡΠ°Π»Π΅ΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ°ΡΠ΅ΠΌ Π² Ρ ΠΎΠ΄Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²ΡΡΡΠ½ΡΡΡΡΡ ΡΠΏΠΎΡΠΎΠ±Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΡΡΠΈΡ ΡΠ°ΡΡΠ΅ΠΉ ΠΈ ΡΠΈΠΊΡΠΈΡΡΡΡΡΡ ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ (Π²Ρ ΠΎΠ΄Π½ΡΠ΅ ΠΈ Π²ΡΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅). ΠΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΊΡΡΠΏΠ½Π°Ρ ΡΠ°ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΏΠΎΠ΄Π²Π΅ΡΠ³Π°Π΅ΡΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎΠΉ Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΠΈ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΠ΅ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° "ΠΏΠΎΡΠ°Π³ΠΎΠ²ΠΎΠ³ΠΎ ΡΡΠΎΡΠ½Π΅Π½ΠΈΡ" (stepwise refinement) ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. ΠΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΠΏΠΈΡΠ΅ΡΡΡ ΠΊΠΎΠ΄ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠΉ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ. ΠΡ ΠΈ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π΄Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ (code reuse) Π³ΠΎΡΠΎΠ²ΡΡ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠΎΡΠΌΠ»ΡΡΡΡΡ Π² Π²ΠΈΠ΄Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
Π ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ½ΡΡ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΎ Π²ΡΠ΄Π΅Π»ΡΡΡ Π΄Π²Π΅ ΡΠ°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡΠΈ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ: ΡΡΠ½ΠΊΡΠΈΠΈ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠΈΠ΅ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠ²ΠΎΠ΅ΠΉ ΡΠ°Π±ΠΎΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ, Π½Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΠ΅ ΡΠ°Π΄ΠΈ ΠΏΠΎΠ±ΠΎΡΠ½ΠΎΠ³ΠΎ ΡΡΡΠ΅ΠΊΡΠ°. Π Perl ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½Π° ΡΠ°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡΡ ΡΡΡΡΠΊΡΡΡΠ½ΡΡ Π΅Π΄ΠΈΠ½ΠΈΡ - ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π²ΡΠ΅Π³Π΄Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
ΠΠΎΠ΄ΠΎΠ±Π½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΠΌΠΈΠ½Π° Π² ΡΠ»ΠΎΠ²Π°ΡΠ΅, ΠΏΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ (subroutine definition) Ρ Π΅Π΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΡ Π½ΡΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ. ΠΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° sub, Π·Π° ΠΊΠΎΡΠΎΡΡΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΠΌΡ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ Π±Π»ΠΎΠΊ, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΉ ΡΠ΅Π»ΠΎΠΌ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠΌΡ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ - ΡΡΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎ ΡΠ΅ΠΌ ΠΆΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ, ΡΡΠΎ ΠΈ ΠΈΠΌΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ ΡΠΎ ΡΠ»ΠΎΠΆΠΈΠ²ΡΠΈΠΌΡΡ ΡΡΠΈΠ»Π΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° Perl ΠΈΠΌΠ΅Π½Π° ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ ΡΡΡΠΎΡΠ½ΡΠΌΠΈ Π±ΡΠΊΠ²Π°ΠΌΠΈ, Π° Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ ΡΠ°Π·Π΄Π΅Π»ΡΡΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΡ. Π§Π°ΡΡΠΎ Π΄Π»Ρ ΠΈΠΌΠ΅Π½ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π²ΡΠ±ΠΈΡΠ°ΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠ΅ ΠΏΠΎ ΡΠΌΡΡΠ»Ρ Π³Π»Π°Π³ΠΎΠ»Ρ. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ Π΅Π΅ Π²ΡΠ·ΠΎΠ²Π°:
# ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ: sub say_hello { # ΠΈΠΌΡ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ if ($language eq 'ru') { # ΡΠ΅Π»ΠΎ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ print 'ΠΠ΄ΡΠ°Π²ΡΡΠ²ΡΠΉΡΠ΅!'; } elsif ($language eq 'ja') { print 'Konnichi-wa!'; } else { print 'Hello!'; } } $language = 'ru'; # Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°ΡΡ ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΠΏΠΎ-ΡΡΡΡΠΊΠΈ say_hello; # Π²ΡΠ·ΠΎΠ² ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π² Π»ΡΠ±ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°. (ΠΠΎΠΆΠ½ΠΎ Π΄Π°ΠΆΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΠΆΠ°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΌΠΈ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΠΏΡΡΠΊΠ°ΡΡΡΡ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ. ΠΠΎ ΡΠ°Π·Π±ΠΈΡΠ°ΡΡΡΡ Π² Π»ΠΎΠ³ΠΈΠΊΠ΅ ΡΠ°ΠΊΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π±ΡΠ΄Π΅Ρ Π½Π΅ΠΏΡΠΎΡΡΠΎ!) ΠΠ· ΡΠΎΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ΄ΠΎΠ±ΡΡΠ²Π°, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΡΠ°ΡΡΠΎ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΡΠ΅ΠΊΡΡΠ΅ ΠΏΠΎΡΠ»Π΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΡΠΎΠ±Ρ Π²Π½Π°ΡΠ°Π»Π΅ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ ΠΎΠ±ΡΠ΅ΠΉ Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠΎ ΡΡΠΎ Π΄Π΅Π»ΠΎ Π²ΠΊΡΡΠ°: Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ, ΠΏΡΠΈΠ²ΡΠΊΡΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ Π½Π° Pascal ΠΈΠ»ΠΈ C, ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π² Π½Π°ΡΠ°Π»Π΅ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ°.
Π Perl Π²ΡΠ΅ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π²ΡΠ΅Π³Π΄Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΡΠ»ΠΈ Π½Π΅ ΡΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΡΠ΅Π³ΠΎ ΠΈΠ½ΠΎΠ³ΠΎ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ Π±ΡΠ΄Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ Π²ΡΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ³ΠΎ Π² ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ. Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ dice() Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ· Π΄Π²ΡΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ ΡΠΈΡΠ΅Π» ΠΎΡ 1 Π΄ΠΎ 6, ΠΈΠΌΠΈΡΠΈΡΡΡ Π±ΡΠΎΡΠΎΠΊ ΠΈΠ³ΡΠ°Π»ΡΠ½ΡΡ ΠΊΠΎΡΡΠ΅ΠΉ:
sub dice { # Π±ΡΠΎΡΠ°Π΅ΠΌ ΠΈΠ³ΡΠ°Π»ΡΠ½ΡΠ΅ ΠΊΠΎΡΡΠΈ: (int(rand 6)+1, int(rand 6)+1); # Π΄Π²Π° ΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ ΡΠΈΡΠ»Π° }
Π’Π°ΠΊΠΆΠ΅ Π² Perl Π΅ΡΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° ΠΈΠ· ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ return, ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π°Π²Π΅ΡΡΠ°Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ. Π’Π°ΠΊ Π΄Π΅Π»Π°Π΅ΡΡΡ Π² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΠΈΡ:
sub greeting { # ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΡΡΠΎΠΊ my $hours = (localtime)[2]; # ΡΠ΅ΠΊΡΡΠΈΠ΅ ΡΠ°ΡΡ if ($hours >= 4 and $hours < 12) { return 'ΠΠΎΠ±ΡΠΎΠ΅ ΡΡΡΠΎ'; } elsif ($hours >= 12 and $hours < 18) { return 'ΠΠΎΠ±ΡΡΠΉ Π΄Π΅Π½Ρ'; } elsif ($hours >= 18 and $hours < 22) { return 'ΠΠΎΠ±ΡΡΠΉ Π²Π΅ΡΠ΅Ρ'; } else { return 'ΠΠΎΠ±ΡΠΎΠΉ Π½ΠΎΡΠΈ'; } } print greeting(), '!';
ΠΡΠ»ΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ ΡΠΊΠ°Π·Π°Π½ΠΎ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΏΡΡΡΠΎΠΉ ΡΠΏΠΈΡΠΎΠΊ Π² ΡΠΏΠΈΡΠΎΡΠ½ΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΈ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ undef - Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΡΠΊΠ°Π»ΡΡΠ½ΠΎΠΌ. Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠ°ΠΉΠ»Π° get_file_size() Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ ΡΠΈΠ³Π½Π°Π» ΠΎΠ± ΠΎΡΡΡΡΡΡΠ²ΠΈΠΈ ΡΠ°ΠΉΠ»Π°.
sub get_file_size { # ΡΠ·Π½Π°ΡΡ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π° return -s $file # Π²Π΅ΡΠ½ΡΡΡ ΡΠ°Π·ΠΌΠ΅Ρ, Π² Ρ.Ρ. 0, if -e $file; # Π΅ΡΠ»ΠΈ ΡΠ°ΠΉΠ» ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ return; # ΡΠ°ΠΉΠ»Π° Π½Π΅Ρ, Π²Π΅ΡΠ½ΡΡΡ undef }
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ return Π² ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ Ρ ΠΎΡΠΎΡΠΈΠΌ ΠΏΡΠΈΠ²ΡΡΠΊΠ°ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΄Π΅Π»Π°Π΅Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΡΠ΅ΠΊΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ½ΡΡΠ½ΡΠΌ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΠΊΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΠΈΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡΡ Π΅Π΅ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ. ΠΠ΅Π΄Ρ Ρ ΠΎΡΠΎΡΠΎ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ, ΡΡΠΎ Π΄Π°ΠΆΠ΅ Π°Π²ΡΠΎΡΡ ΠΏΠΎΡΡΠ΅Π±ΡΡΡΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΈ ΡΡΠΈΠ»ΠΈΡ, ΡΡΠΎΠ±Ρ Π²ΡΠΏΠΎΠΌΠ½ΠΈΡΡ Π² Π΄Π΅ΡΠ°Π»ΡΡ Π»ΠΎΠ³ΠΈΠΊΡ Π΄Π°Π²Π½ΠΎ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠΉ ΠΈΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΠΎΠΌΠ½Ρ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΡΠΏΠΈΡΠΊΠΈ Π² Perl - ΠΎΠ΄Π½ΠΎΠΌΠ΅ΡΠ½ΡΠ΅, ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΏΠΎΠ½ΡΡΠ½ΡΠΌ, ΡΡΠΎ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π² Perl ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠΏΠΈΡΠΎΠΊ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π² Π½Π΅ΠΉ Π·Π°ΠΏΠΈΡΠ°Π½ΠΎ return (@array1, @array2), Π±ΡΠ΄Π΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ· ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² @array1 ΠΈ @array2. ΠΠΎΡΡΠΎΠΌΡ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π²Π΅ΡΠ½ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΈΡΠΎΡΠ½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π½ΠΈΡ , Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ: return (\@array1, \@array2).
ΠΠΎΠΊΠ° ΡΡΠΎ Π² ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , Π½ΠΎ ΡΠ°ΠΌΠ° ΠΈΠ΄Π΅Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π·Π°Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Π² Π½ΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΡ ΠΈΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ². ΠΠΎΠ³Π΄Π° ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Ρ Π½Π°Π±ΠΎΡΠΎΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², Π΅ΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² Ρ ΠΏΡΠ΅Π΄ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ @_, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ². Π ΡΠ΅Π»Π΅ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π² Π²ΠΈΠ΄Π΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²Π° @_, ΡΡΠΎ Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
sub cube { # Π²ΡΡΠΈΡΠ»ΠΈΡΡ ΠΊΡΠ± ΡΠΈΡΠ»Π° return $_[0] * $_[0] * $_[0]; # ΡΠΌΠ½ΠΎΠΆΠΈΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ } print cube(2); # Π±ΡΠ΄Π΅Ρ Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°Π½ΠΎ 8
ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡΡΠ½ΠΈΡΡ, Π·Π°ΠΏΡΠΎΡΠΈΠ² ΡΠΈΡΠ»ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²Π° @_. ΠΠ»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΏΠΈΡΠΊΠ° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ shift(), ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΠΎΠ΅ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅:
print2files($message, $file1, $file2, $file3); sub print2files { # Π²ΡΠ²Π΅ΡΡΠΈ ΡΠ΅ΠΊΡΡ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΉΠ»ΠΎΠ² my $text = shift; # 1-ΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ - ΡΠ΅ΠΊΡΡ while (@_) { my $file = shift; # ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠ΅ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° open my $fh, ">>$file" or die; print $fh $text; close $fh or die; } }
ΠΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Π·Π°Π΄Π°Π½Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ, ΡΠΎ ΠΌΠ°ΡΡΠΈΠ² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² @_ ΡΠΎΠ²ΠΌΠ΅ΡΠ°Π΅ΡΡΡ Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠΌΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²Π° ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π² Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅. ΠΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠΈΠ»Π»ΡΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ (Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΡΠΊΡΡΡΡΠ²Π΅Π½Π½ΡΠΌ) ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ:
sub sum2 { # Π²ΡΡΠΈΡΠ»ΠΈΡΡ ΡΡΠΌΠΌΡ 2-Ρ ΡΠΈΡΠ΅Π» $_[0] = $_[1] + $_[2]; # ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ ΡΡΠΌΠΌΡ Π² 1-ΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ return; } my $a = 1, $b = 2, $sum = 0; sum2($sum, $a, $b); print "$a+$b=$sum"; # Π±ΡΠ΄Π΅Ρ Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°Π½ΠΎ: 1+2=3
ΠΠΏΡΡ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π²Π΅Π΄Π΅Ρ ΠΊ ΡΡΡΠ΄Π½ΠΎ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠΌ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌ ΠΈ ΠΎΡΠ»ΠΎΠΆΠ½ΡΠ΅Ρ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ»ΡΡΠ°ΡΡ ΠΈ Π²ΡΠ΅Π³Π΄Π° ΠΎΠ³ΠΎΠ²Π°ΡΠΈΠ²Π°ΡΡΡΡ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ . ΠΠ±ΡΠ΅ΠΏΡΠΈΠ½ΡΡΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΡΠΏΠΈΡΠΊΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ : ΡΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡ ΡΠ°Π½ΡΠ΅Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΎΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π΅ Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΌΠ°ΡΡΠΈΠ²Π°, Π° Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ Π½Π°Π·Π²Π°Π½Π½ΡΠΌΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ. ΠΡΠΎ Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
sub get_file { # ΡΡΠΈΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· ΡΠ°ΠΉΠ»Π° my ($path, $file) = @_; # ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ return unless -e "$path/$file"; # Π°Π²Π°ΡΠΈΡ: ΡΠ°ΠΉΠ»Π° Π½Π΅Ρ open my $fh, '<', "$path/$file" or return; my @lines = <$fh>; # ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π²ΡΠ΅ ΡΡΡΠΎΠΊΠΈ ΡΠ°ΠΉΠ»Π° Π² ΠΌΠ°ΡΡΠΈΠ² close $fh or return; return @lines; # Π²Π΅ΡΠ½ΡΡΡ ΠΌΠ°ΡΡΠΈΠ² ΡΡΡΠΎΠΊ ΡΠ°ΠΉΠ»Π° } my @data = get_file('/tmp', 'log.txt');