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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π―Π·Ρ‹ΠΊ программирования PerlΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 10

Автор ΠœΠΈΡ…Π°ΠΈΠ» Π¨ΠΎΡ…ΠΈΡ€Π΅Π²

Но это считаСтся Π΄ΡƒΡ€Π½Ρ‹ΠΌ Ρ‚ΠΎΠ½ΠΎΠΌ. Π”Π° ΠΈ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ слоТно Π΄Π°ΠΆΠ΅ Π΅Π΅ Π°Π²Ρ‚ΠΎΡ€Ρƒ, особСнно Ссли ΠΎΠ½Π° большого Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΈ ΠΏΡ€ΠΎΡˆΠ»ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя послС Π΅Π΅ написания!

ΠŸΡ€ΠΎΡΡ‚Ρ‹Π΅ прСдлоТСния, составлСнныС ΠΈΠ· Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΎ Π·Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌ, образуя ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ дСйствий. ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ Π² Π±Π»ΠΎΠΊ - ΠΎΠ΄Π½ΠΎ ΠΈΠ»ΠΈ нСсколько ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΎΠ±Ρ€Π°ΠΌΠ»Π΅Π½Π½Ρ‹Ρ… Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹ΠΌΠΈ скобками, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Π΅Π΄ΠΈΠ½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅. Π‘Π»ΠΎΠΊΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ для Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… конструкций, Π° Ρ‚Π°ΠΊΠΆΠ΅ для задания области видимости ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Π’ΠΎΡ‡ΠΊΠ° с запятой ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΡΡ‚Π°Π²ΠΈΡ‚ΡŒΡΡ Π² ΠΊΠΎΠ½Ρ†Π΅ послСднСго прСдлоТСния Π² Π±Π»ΠΎΠΊΠ΅ (ΠΊΠ°ΠΊ это дСлаСтся Π² языкС Pascal), Π½ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ Π΅Π΅ ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ всСгда, Π½Π° случай, Ссли ΠΏΠΎΠ·Π΄Π½Π΅Π΅ добавится Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π‘Π»ΠΎΠΊ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒΡŽ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ конструкции, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ Ρ†ΠΈΠΊΠ» ΠΈΠ»ΠΈ условный ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€. А Π±Π»ΠΎΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π½ΠΈ Π² ΠΎΠ΄Π½Ρƒ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ, называСтся Π³ΠΎΠ»Ρ‹ΠΌ Π±Π»ΠΎΠΊΠΎΠΌ (bare block).


{ # Π½Π°Ρ‡Π°Π»ΠΎ Π±Π»ΠΎΠΊΠ° # ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ, # ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‰ΠΈΡ… Ρ‚Π΅Π»ΠΎ Π±Π»ΠΎΠΊΠ° } # ΠΊΠΎΠ½Π΅Ρ† Π±Π»ΠΎΠΊΠ°


ΠšΡ€ΠΎΠΌΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π² Perl ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ составныС прСдлоТСния, состоящиС ΠΈΠ· Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π±Π»ΠΎΠΊΠΎΠ². БоставныС прСдлоТСния Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов (keywords) - ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… слов языка, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΡ€Π°ΠΉΠ½Π΅ Π½Π΅ рСкомСндуСтся (Π° Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… языках просто Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ) ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π² качСствС ΠΈΠΌΠ΅Π½ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. БоставныС прСдлоТСния часто Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΌΠΈ структурами, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для управлСния порядком выполнСния дСйствий Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, организуя, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, вСтвлСния ΠΈ Ρ†ΠΈΠΊΠ»Ρ‹.

Как извСстно, условныС прСдлоТСния ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ‚Π΅Ρ… ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹Ρ… дСйствий Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π² зависимости ΠΎΡ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ условия. Π’ Perl условная конструкция (ΠΈΠ»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ if), ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‰Π°Ρ ΠΈΡΡ‚ΠΈΠ½Π½ΠΎΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ³ΠΎ условия, Π² самом простом Π²ΠΈΠ΄Π΅ записываСтся Ρ‚Π°ΠΊ:


if (условиС) { # ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° истинности условия # дСйствия, выполняСмыС, # Ссли условиС истинно } # ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹


ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ послС условного выраТСния, ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки, Π½Π΅ΠΏΡ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡ‚ΠΎΡΡ‚ΡŒ Π±Π»ΠΎΠΊ. НапримСр, Ρ‚Π°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ вывСсти Π½Π° ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΎ - Π½Π΅Ρ‡Π΅Ρ‚Π½ΠΎΠ΅:


if ($count % 2 == 1) { # остаток ΠΎΡ‚ дСлСния Π½Π° 2 Ρ€Π°Π²Π΅Π½ 1 print $count; }


Другая общСизвСстная Ρ„ΠΎΡ€ΠΌΠ° условного прСдлоТСния содСрТит Π±Π»ΠΎΠΊ, выполняСмый ΠΏΡ€ΠΈ Π»ΠΎΠΆΠ½ΠΎΠΌ условии, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ:


if (условиС) { # ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° истинности условия # дСйствия, выполняСмыС, # Ссли условиС истинно } else { # дСйствия, выполняСмыС Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС # (Ссли условиС Π»ΠΎΠΆΠ½ΠΎ) } # ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹


Π’ Perl имССтся Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° Ρ„ΠΎΡ€ΠΌΠ° условного прСдлоТСния, которая Π·Π°Π΄Π°Π΅Ρ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… условий, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π² Ρ„Ρ€Π°Π·Π΅ if ΠΈΠ»ΠΈ elsif. Она выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:


if (условиС 1) { # ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° истинности 1-Π³ΠΎ условия # дСйствия, выполняСмыС, # Ссли условиС 1 истинно} elsif (условиС 2) { # ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° истинности 2-Π³ΠΎ условия # дСйствия, выполняСмыС, # Ссли условиС 2 истинно # ... здСсь ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π΅Ρ‰Π΅ Ρ„Ρ€Π°Π·Ρ‹ elsif ... elsif (условиС N) { # ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° истинности N-Π³ΠΎ условия # дСйствия, выполняСмыС, # Ссли условиС N истинно } else { # дСйствия, выполняСмыС, # Ссли всС условия Π»ΠΎΠΆΠ½Ρ‹ } # ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹


ΠŸΡ€ΠΈ этом выполнится ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π±Π»ΠΎΠΊΠΎΠ² дСйствий: ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ истинному ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ ΠΈΠ»ΠΈ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π·Π° Ρ„Ρ€Π°Π·ΠΎΠΉ else. Π€Ρ€Π°Π·Π° else ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‚ΠΎΠ³Π΄Π° ΠΏΡ€ΠΈ всСх Π»ΠΎΠΆΠ½Ρ‹Ρ… условиях Π½Π΅ дСлаСтся Π½ΠΈΡ‡Π΅Π³ΠΎ. Π€ΠΎΡ€ΠΌΠ° условного прСдлоТСния с elsif замСняСт ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π² Perl ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π²Ρ‹Π±ΠΎΡ€Π° (Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ do-case ΠΈΠ»ΠΈ switch).

Иногда трСбуСтся ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ, Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ условия становится ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ выполнСния ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ дСйствий. Для этого Π² Perl Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° Ρ€Π°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒ условного прСдлоТСния, которая записываСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова unless:


unless (условиС) { # ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° лоТности условия # дСйствия, выполняСмыС, # Ссли условиС Π»ΠΎΠΆΠ½ΠΎ } else { # дСйствия, выполняСмыС # Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС } # ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹


Π—Π΄Π΅ΡΡŒ Ρ„Ρ€Π°Π·Π° else Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ, Ссли ΠΏΡ€ΠΈ истинности условия Π½Π΅ трСбуСтся Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… дСйствий.

Как ΡƒΠΆΠ΅ извСстно ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ Π»Π΅ΠΊΡ†ΠΈΠΈ, Π²Ρ‹Ρ€Π°ΠΆΠ°Ρ‚ΡŒ условноС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ дСйствия ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ, ΠΎΡ‡Π΅Π½ΡŒ популярным Π² Perl способом: с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ логичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. Π’Π°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Ссли ΠΏΠ΅Ρ€Π²ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ истинным:


($count % 2 == 1) and print $count;


УсловноС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ дСйствия ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ², ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π΅Ρ‡ΡŒ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ Π΄Π°Π»Π΅Π΅ Π² этой Π»Π΅ΠΊΡ†ΠΈΠΈ.

Как извСстно, Ρ†ΠΈΠΊΠ»ΠΎΠΌ называСтся ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π°Ρ конструкция для повторСния дСйствий Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, Π° ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² Ρ†ΠΈΠΊΠ»Π΅ называСтся ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ. Π’ Perl сущСствуСт мноТСство Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… способов Π·Π°Π΄Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π΄Π°Π½Π½Ρ‹Ρ…. Один ΠΈΠ· Π½ΠΈΡ… - это ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ управлСния Ρ†ΠΈΠΊΠ»ΠΎΠΌ. Если трСбуСтся ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠ΅ дСйствий Π² зависимости ΠΎΡ‚ истинности условия, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ†ΠΈΠΊΠ»ΠΎΠΌ while (Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ Ρ‚Π°ΠΊΠΆΠ΅ Ρ†ΠΈΠΊΠ»ΠΎΠΌ с прСдусловиСм), Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ Ρ†ΠΈΠΊΠ»Π° провСряСтся условиС продолТСния: Ссли ΠΎΠ½ΠΎ истинно, Ρ‚ΠΎ Π±Π»ΠΎΠΊ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π° повторяСтся, ΠΈΠ½Π°Ρ‡Π΅ Ρ†ΠΈΠΊΠ» заканчиваСтся ΠΈ выполняСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.


while (условиС) { # ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° истинности условия продолТСния # дСйствия, выполняСмыС, # ΠΏΠΎΠΊΠ° условиС истинно } # ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹


НапримСр, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚Π°ΠΊΠΈΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ while для Π²Ρ‹Π²ΠΎΠ΄Π° Π½Π° ΡΠΈΡΡ‚Π΅ΠΌΠ½ΡƒΡŽ консоль дСсяти случайных чисСл ΠΎΡ‚ 0 Π΄ΠΎ 1, сгСнСрированных встроСнной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ rand:


$i = 0; while ($i < 10) { # ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ, ΠΏΠΎΠΊΠ° счСтчик Π½Π΅ достиг 10 print "\n", rand; # вывСсти с Π½ΠΎΠ²ΠΎΠΉ строки случайноС число $i++; # ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ счСтчик ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΉ }


Иногда ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ для управлСния Ρ†ΠΈΠΊΠ»ΠΎΠΌ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ условиС окончания Ρ†ΠΈΠΊΠ»Π°. Π’ этом случаС примСняСтся Ρ†ΠΈΠΊΠ» until, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π° провСряСтся условиС окончания ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΉ: Ссли ΠΎΠ½ΠΎ истинно, Ρ†ΠΈΠΊΠ» заканчиваСтся ΠΈ выполняСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π° Ссли условиС Π»ΠΎΠΆΠ½ΠΎ, Ρ‚ΠΎ Π±Π»ΠΎΠΊ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π° выполняСтся Π΅Ρ‰Π΅ Ρ€Π°Π·.


until (условиС) { # ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° истинности условия окончания # дСйствия, выполняСмыС, # ΠΏΠΎΠΊΠ° условиС Π»ΠΎΠΆΠ½ΠΎ } # ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹


ΠŸΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹Π²ΠΎΠ΄Π° случайных чисСл ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ с использованиСм Ρ†ΠΈΠΊΠ»Π° until:


$i = 0; until ($i == 10) { # Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° счСтчик достигнСт 10 print "\n", rand; # вывСсти с Π½ΠΎΠ²ΠΎΠΉ строки случайноС число $i++; # ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ счСтчик ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΉ }


Другая ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π°Ρ конструкция - Ρ†ΠΈΠΊΠ» for Ρ‚Π°ΠΊΠΆΠ΅ примСняСтся для повторСния дСйствий с ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ условия продолТСния. Но Π² Π½Π΅ΠΌ прСдусмотрСны Π΄Π²Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… выраТСния для управлСния Ρ†ΠΈΠΊΠ»ΠΎΠΌ. ΠŸΠ΅Ρ€Π²ΠΎΠ΅ ΠΈΠ· Π½ΠΈΡ… выполняСтся ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ Ρ†ΠΈΠΊΠ»Π°, ΠΈ Π² Π½Π΅ΠΌ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ дСйствия, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ инициализация ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Π’Ρ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ выполняСтся ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· послС выполнСния Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π° ΠΈ ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ условия продолТСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ†ΠΈΠΊΠ»Π°. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° этого Ρ†ΠΈΠΊΠ»Π° выглядит Ρ‚Π°ΠΊ:


for (ΠΏΠ΅Ρ€Π²ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅; условиС; Π²Ρ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅) { # дСйствия, выполняСмыС, # ΠΏΠΎΠΊΠ° условиС истинно } # ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹


Π’ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ Ρ†ΠΈΠΊΠ»Π° ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΈΠ»ΠΈ ΠΎΠ±Π° выраТСния, Π° Π² случаС отсутствия условия ΠΎΠ½ΠΎ считаСтся истинным. Однако ΠΏΡ€ΠΈ этом Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ Π΄Π²Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ с запятой, Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠ΅ выраТСния. Π‘Π½ΠΎΠ²Π° ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡˆΠ΅ΠΌ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π° этот Ρ€Π°Π· ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ†ΠΈΠΊΠ» for:


for ($i=0; $i<10; $i++) { # ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ 10 Ρ€Π°Π·, увСличивая $i print "\n", rand; # вывСсти с Π½ΠΎΠ²ΠΎΠΉ строки случайноС число }


Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Ρ‚ΠΈΠΏ Ρ†ΠΈΠΊΠ»Π° ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° всСх элСмСнтов списка, для Ρ‡Π΅Π³ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π΅Π³ΠΎ элСмСнт ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ помСщаСтся Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ. Π­Ρ‚ΠΎ Ρ†ΠΈΠΊΠ» foreach:


foreach пСрСмСнная (список) { # # Ρ€Π°Π±ΠΎΡ‚Π° с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, содСрТащСй # Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ элСмСнт ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ списка }


ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования Ρ†ΠΈΠΊΠ»Π° foreach Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π² Π»Π΅ΠΊΡ†ΠΈΠΈ 5, посвящСнной спискам. Π’ Π½Π΅ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ рассмотрСно Π΅Ρ‰Π΅ нСсколько конструкций, Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΡ… ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠ΅ дСйствий.

Π’ Perl Π΅ΡΡ‚ΡŒ нСсколько ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ для управлСния Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это трСбуСтся ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ. Когда ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Ρ†ΠΈΠΊΠ»Π° трСбуСтся досрочно Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ наступлСнии ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ события, Ρ‚ΠΎ для этого ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ last (Π°Π½Π°Π»ΠΎΠ³ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° break Π² языкС C), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Π° ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ прСдлоТСния, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π·Π° Ρ†ΠΈΠΊΠ»ΠΎΠΌ. НапримСр, Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ 10 случайных чисСл ΠΎΡ‚ 0 Π΄ΠΎ 0,5 ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊ:


$i = 0; while (1) { # бСзусловно Π²Ρ…ΠΎΠ΄ΠΈΠΌ Π² Ρ†ΠΈΠΊΠ» $random = rand; # ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ случайноС число if ($i == 10) { # ΠΏΠΎ достиТСнии счСтчика 10 last; # ΠŸΠ Π•Π Π«Π’ΠΠ•Πœ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Π° } if ($random < 0.5) { # числа мСньшС 0.5 print "\n", $random; # Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π½Π° консоль $i++; # ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ счСтчик ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΉ } } # сюда ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΏΠΎ last