Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² PerlΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 2

Автор Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Маслов

-c

ВыполняСтся синтаксичСская ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° скрипта ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄ Π±Π΅Π· запуска.

-d

Запуск Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ.

-Dчисло ΠΈΠ»ΠΈ Dсписок

Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ„Π»Π°Π³ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠŸΠ΅Ρ€Π». НапримСр -d14 ΠΏΡ€ΠΎΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ ΠŸΠ΅Ρ€Π» исполняСт Π²Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

1 p Π‘интаксичСский Ρ€Π°Π·Π±ΠΎΡ€

2 s Π‘остояниС стСка

4 l Π‘остояниС стСка ΠΈΠΌΠ΅Π½

8 t Π’рассировка исполнСния

16 o Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΡƒΠ·Π»Π°

32 c Π‘Ρ‚Ρ€ΠΎΠΊΠΎΠ²ΠΎΠ΅/числовоС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅

64 p Π’Ρ‹Π²ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ прСпроцСссора для -P

128 m Π Π°ΡΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ памяти

256 f ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°

512 r Π‘интаксичСский Ρ€Π°Π·Π±ΠΎΡ€ рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ

1024 x Π”Π°ΠΌΠΏ синтаксичСского Π΄Π΅Ρ€Π΅Π²Π°

2048 u ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π·Π°Ρ‰ΠΈΡ‚Ρ‹

4096 L Β«Π£Ρ‚Π΅Ρ‡ΠΊΠ°Β» памяти

8192 H Π”Π°ΠΌΠΏ Ρ…Π΅ΡˆΠ°

16384 X Π Π°ΡΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ scratchpad

32768 D ΠžΡ‡ΠΈΡΡ‚ΠΊΠ°

-e ΠΊΠΎΠΌΠ°Π½Π΄Π°

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ скрипта ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ строки ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС.

-F шаблон

Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ шаблон раздСлСния Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠ»ΡŽΡ‡ΠΎΠΌ -a

-iΡ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅

ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅Ρ‚ΡΡ для Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ Ρ„Π°ΠΉΠ»Π° ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ '<>'. ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π» хранится Π² Ρ„Π°ΠΉΠ»Π΅ с Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρ‡Ρ‚ΠΎ ΠΈ исходный, Π½ΠΎ с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

perl -p -i.old -e Β«s/рядовой/Π΅Ρ„Ρ€Π΅ΠΉΡ‚ΠΎΡ€/Β» file

– ΠŸΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ всС слова «рядовой» Π½Π° Β«Π΅Ρ„Ρ€Π΅ΠΉΡ‚ΠΎΡ€Β» Π² Ρ„Π°ΠΉΠ»Π΅ file

Π° ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π» Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² Ρ„Π°ΠΉΠ»Π΅ file.old

-IдирСктория

ДирСктория includ- Ρ„Π°ΠΉΠ»ΠΎΠ² для Π‘ прСпроцСссора. ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅Ρ‚ΡΡ с ΠΊΠ»ΡŽΡ‡ΠΎΠΌ –P

ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ это /usr/include ΠΈ /usr/lib/perl.

-lчисло


АвтоматичСская ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° символа ΠΊΠΎΠ½Ρ†Π° строки.

Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Π΄Π²ΡƒΡ… случаях.

1. ΠžΡ‚Π±Ρ€Π°ΡΡ‹Π²Π°Π΅Ρ‚ послСдний символ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹Ρ… строк для Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² -n ΠΈ -p

2. ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ $\. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΊ ΠΊΠΎΠ½Ρ†Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ print добавляСтся этот символ.

-n

Π—Π°Ρ†ΠΈΠΊΠ»ΠΈΠ²Π°Π΅Ρ‚ скрипт ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ»Ρ‹ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС. ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ sed ΠΈΠ»ΠΈ awk.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ BEGIN ΠΈ END Π΄Π°ΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ установки. Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² Π½Π΅ выводится.

-p

Π’ΠΎ ΠΆΠ΅ Ρ‡Ρ‚ΠΎ ΠΈ -n Π½ΠΎ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ строки Ρ„Π°ΠΉΠ»ΠΎΠ².

-P

ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎ прСпроцСссором языка Π‘. Π‘ΡƒΠ΄ΡŒΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ ΠΈ Π½Π΅ примСняйтС Π² коммСнтариях слова 'if', 'else' ΠΈΠ»ΠΈ 'define' Ρ‚.ΠΊ. это ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π‘ – прСпроцСссора.

-s

Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ€Π΅ΠΆΠΈΠΌΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки запуска скрипта.

ВсС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ с символом '-' Π² Π½Π°Ρ‡Π°Π»Π΅, ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ с Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ присваиваСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true.

-S


ИспользованиС систСмной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ PATH для поиска скрипта.

Π”Π°Π½Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ примСняСтся Π² систСмах Π½Π΅ Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΡ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ "#!" Π² Π½Π°Ρ‡Π°Π»Π΅ скрипта для указания ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°.

-T

Π Π΅ΠΆΠΈΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Β«Π΄Ρ‹Ρ€Β» Π² Π·Π°Ρ‰ΠΈΡ‚Π΅. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это Π½ΡƒΠΆΠ½ΠΎ для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΈΠ²Π΅Π»Π΅Π³ΠΈΠΈ (setuid, setguid). Π–Π΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ для CGI скриптов.

-u

ΠŸΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π΄Π°ΠΌΠΏ памяти послС компиляции скрипта. Π­Ρ‚ΠΎΡ‚ Π΄Π°ΠΌΠΏ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‚ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для создания исполняСмого Ρ„Π°ΠΉΠ»Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ undump.

-U

Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ опасныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. НапримСр ΡΡ‚Π΅Ρ€Π΅Ρ‚ΡŒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ ΠΈΠ»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ явно Π½Π΅ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

-v

Π’Ρ‹Π²ΠΎΠ΄ Π½ΠΎΠΌΠ΅Ρ€Π° вСрсии ΠŸΠ΅Ρ€Π».

-w

Π’Ρ‹Π²ΠΎΠ΄ ΠΈΠΌΠ΅Π½ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, ΠΈΠΌΠ΅Π½ скаляров ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π΄ΠΎ ΠΈΡ… опрСдСлСния, ΠΈΠΌΠ΅Π½ пСрСопрСдСляСмых ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ссылок Π½Π° Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ записи Π² Ρ„Π°ΠΉΠ»Ρ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Β«Ρ‡Ρ‚Π΅Π½ΠΈΠ΅Β», ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΊΠΎΡ€Π΅Ρ‚Π½Ρ‹Ρ… записСй чисСл, использованиС массивов ΠΊΠ°ΠΊ скаляров, рСкурсия Π±ΠΎΠ»Π΅Π΅ 100 ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ.

-x дирСктория

Π Π΅ΠΆΠΈΠΌ запуска скрипта вставлСнного Π² Ρ„Π°ΠΉΠ» содСрТащий ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ тСкст. Началом скрипта считаСстся строка с символами '#!' Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΈ содСрТащия слово perl. ΠšΠΎΠ½Ρ†ΠΎΠΌ – строка с '__END__'

Указанная дирСктория становится Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ исполнСния. Если Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ строки Ρ‚ΠΎ это Π»ΡƒΡ‡ΡˆΠ΅ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Ρ„Π°ΠΉΠ»Π° DATA.

Бинтаксис

ΠŸΠ΅Ρ€Π» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° (скрипт) состоит ΠΈΠ· ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΉ ΠΈ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

ЕдинствСнно Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ это Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ² ΠΈ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ). ВсС Π½Π΅ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, массивы, ΠΈΠΌΠ΅ΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0 ΠΈΠ»ΠΈ null.

Π”Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈ (объявлСния).

ΠŸΠ΅Ρ€Π» ΠΈΠΌΠ΅Π΅Ρ‚ свободный Ρ„ΠΎΡ€ΠΌΠ°Ρ‚. ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с символа '#' ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‚ΡΡ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° строки.

Π”Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² любом мСстС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ прСдлоТСния (statements) Π½ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ ΠΎΠ½ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ„Π°Π·Π΅ компиляции ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡ… ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ ΠΈΠ»ΠΈ Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΈΠ»ΠΈ Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ДСкларация ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ имя ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΊΠ°ΠΊ списковый ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ начиная с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° дСкларирования.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

sub test; # ДСкларация ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ test

$var1 = test $0; # ИспользованиС ΠΊΠ°ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° списка.

Π”Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Ρ‹ ΠΈΠ· ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ require ΠΈΠ»ΠΈ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½ΠΎ ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ Π² Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΈΠΌΠ΅Π½ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ use. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ см. Π³Π»Π°Π²Ρƒ ΠœΠΎΠ΄ΡƒΠ»ΠΈ.

ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ заканчиваСтся символом ';' Ссли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ это Π½Π΅ послСднСС ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Π»ΠΎΠΊΠ΅ Π³Π΄Π΅ ';' ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ. Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅ Ρ‡Ρ‚ΠΎ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ eval{} ΠΈ do{} ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ выглядят ΠΊΠ°ΠΊ слоТныС прСдлоТСния Π½ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ это Ρ‚Π΅Ρ€ΠΌΡ‹ ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ указания ΠΊΠΎΠ½Ρ†Π° прСдлоТСния.

Π›ΡŽΠ±ΠΎΠ΅ простоС ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ single ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΏΠ΅Ρ€Π΅Π΄ ';'. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ single ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹:

if EXPR

unless EXPR

while EXPR

until EXPR

Π³Π΄Π΅ EXPR – Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π΅Π΅ логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true ΠΈΠ»ΠΈ false.

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ while ΠΈ until Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ Π² Π½Π°Ρ‡Π°Π»Π΅ прСдлоТСния ΠΊΡ€ΠΎΠΌΠ΅ Π±Π»ΠΎΠΊΠ° do ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполняСтся ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ.

if EXPR– ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ «Ссли». ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ выполняСтся Ссли EXPR Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ true.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

$var = 1;

$var2 = 3 if $var > 0; # Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: $var2 = 3

while EXPR β€“ ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Β«ΠΏΠΎΠΊΠ°Β». ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ выполняСтся ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π· ΠΏΠΎΠΊΠ°EXPR = true

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

$var = 1;

print $var++ while $var < 5; # ΠŸΠ΅Ρ‡Π°Ρ‚ΡŒ $var с ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠΌ

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: 1234


until EXPR β€“ ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ "Π΄ΠΎ ". ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ выполняСтся Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€ ΠΏΠΎΠΊΠ° EXPR = false

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

$var = 1;

print $var++ until $var > 5; # ΠŸΠ΅Ρ‡Π°Ρ‚ΡŒ $var с ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠΌ

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: 12345

unless EXPR – ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ «Ссли Π½Π΅Β» . ΠžΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ ΠΊ if. Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ выполняСтся СслС EXPR = false.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

$var = 1;

print $var++ unless $var > 5; # ΠŸΠ΅Ρ‡Π°Ρ‚ΡŒ $var с ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠΌ

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: 1


Π‘Π»ΠΎΠΆΠ½Ρ‹Π΅ прСдлоТСния.

ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ простых ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ ограничСнная Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ограничитСлями называСтся Π±Π»ΠΎΠΊΠΎΠΌ. Π’ ΠŸΠ΅Ρ€Π» это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ†Π΅Π»Ρ‹ΠΉ Ρ„Π°ΠΉΠ», ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ eval{} ΠΈΠ»ΠΈ Ρ‡Π°Ρ‰Π΅ всСго это мноТСство простых ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΊΡ€ΡƒΠ³Π»Ρ‹ΠΌΠΈ скобками '{}'.

Π‘ΡƒΠΆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ слоТных ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ:

if (EXPR) BLOCK

if (EXPR) BLOCK else BLOCK

if (EXPR) BLOCK elsif (EXPR) BLOCK ... else BLOCK

LABEL while (EXPR) BLOCK

LABEL while (EXPR) BLOCK continue BLOCK

LABEL for (EXPR; EXPR; EXPR) BLOCK

LABEL foreach VAR (LIST) BLOCK

LABEL BLOCK continue BLOCK

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ слоТныС прСдлоТСния описаны Π² Ρ‚Π΅Ρ€ΠΌΠ°Ρ… Π±Π»ΠΎΠΊΠΎΠ² Π° Π½Π΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΊΠ°ΠΊ Π² языках C ΠΈΠ»ΠΈ Pascal. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ всСгда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки для обозначСния Π±Π»ΠΎΠΊΠ°.

if (EXPR) BLOCK β€“ ВычисляСтся логичСскоС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ EXPR ΠΈ Ссли true Π±Π»ΠΎΠΊ выполняСтся.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

$var =1;

if ($var == 1)

{ print $var,"\n";

}

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: 1


if (EXPR) BLOCKelseBLOCK2 – Π•сли EXPR=true выполняСтся BLOCK ΠΈΠ½Π°Ρ‡Π΅ BLOCK2.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

$var =2;

if ($var == 1)

{ print Β«\$var = 1\nΒ»;

}

else

{ print Β«\$var Π½Π΅ Ρ€Π°Π²Π½ΠΎ 1\nΒ»;

}

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: $var Π½Π΅ Ρ€Π°Π²Π½ΠΎ 1

if (EXPR1) BLOCK1 elsif (EXPR2) BLOCK2 ... else BLOCK β€“ Π•сли EXPR1=true выполняСтся BLOCK1 ΠΈΠ½Π°Ρ‡Π΅ Ссли EXPR2=true выполняСтся BLOCK2 ΠΈΠ½Π°Ρ‡Π΅ ... ΠΈΠ½Π°Ρ‡Π΅ BLOCK.