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

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

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

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ρ‡Ρ‚ΠΎ всС это Β«ΠΎΠ΄ΠΈΠ½Β» символ. Для обозначСния ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ примСняйтС ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹. Π’Π°ΠΊ:

\w+ – слово

\d+ – Ρ†Π΅Π»ΠΎΠ΅ число

[+-]?\d+ β€“ Ρ†Π΅Π»ΠΎΠ΅ со Π·Π½Π°ΠΊΠΎΠΌ

[+-]?\d+\.?\d* β€“ число с Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΌΠ½ΠΈΠΌΡ‹Π΅ мСтасимволы. ΠžΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰ΠΈΠ΅ Π½Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ символы Π² мСстС смСны значСния. Π’Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ:

\b β€“ Π³Ρ€Π°Π½ΠΈΡ†Π° слова

\B β€“ Π½Π΅ Π³Ρ€Π°Π½ΠΈΡ†Π° слова

\A β€“ Π½Π°Ρ‡Π°Π»ΠΎ строки

\Z β€“ ΠΊΠΎΠ½Π΅Ρ† строки

\G β€“ ΠΊΠΎΠ½Π΅Ρ† дСйствия m//g

Π“Ρ€Π°Π½ΠΈΡ†Π° слова (\b) – это мнимая Ρ‚ΠΎΡ‡ΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρƒ символами \w ΠΈ \W.

Π’Π½ΡƒΡ‚Ρ€ΠΈ класса символов '\b' ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ символ backspace (стирания).

ΠœΠ΅Ρ‚Π°ΡΠΈΠΌΠ²ΠΎΠ»Ρ‹ \A ΠΈ \Z – Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ '^' ΠΈ '$' Π½ΠΎ Ссли началостроки '^' ΠΈ ΠΊΠΎΠ½Π΅Ρ† строки '$' Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки Π² многосторочной строкС Ρ‚ΠΎ \A ΠΈ \Z ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ Π½Π°Ρ‡Π°Π»ΠΎ ΠΈ ΠΊΠΎΠ½Π΅Ρ† всСй многосторчной строки.

Если Π²Π½ΡƒΡ‚Ρ€ΠΈ шаблона примСняСтся Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ° (ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки) Ρ‚ΠΎ Π½ΠΎΠΌΠ΅Ρ€ подстроки Π³Ρ€ΡƒΠΏΠΏΡ‹ обозначаСтся ΠΊΠ°ΠΊ '\Ρ†ΠΈΡ„Ρ€Π°'.

Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅ Ρ‡Ρ‚ΠΎ Π·Π° шаблоном Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… выраТСния ΠΈΠ»ΠΈ Π±Π»ΠΎΠΊΠ° эти Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ '$Ρ†ΠΈΡ„Ρ€Π°'. ΠšΡ€ΠΎΠΌΠ΅ этого ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅:

$+  – ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ послСднСС совпадСниС

$& β€“ всС совпадСниС

$` β€“ всС Π΄ΠΎ совпадСния

$' β€“ всС послС совпадСния

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

$s = «Один 1 Π΄Π²Π° 2 ΠΈ Ρ‚Ρ€ΠΈ 3Β»;

if ($s =~ /(\d+)\D+(\d+)/)

{

print Β«$1\nΒ»; # Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ '1'

print Β«$2\nΒ»; # '2'

print Β«$+\nΒ»; # '2'

print Β«$&\nΒ»; # '1 Π΄Π²Π° 2'

print Β«$`\nΒ»; # 'Один '

print Β«$'\nΒ»; # ' ΠΈ Ρ‚Ρ€ΠΈ 3'

}

ΠŸΠ΅Ρ€Π» вСрсии 5 содСрТит Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ конструкции шаблонов:

(?#ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ) – ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π² Ρ‚Π΅Π»Π΅ шаблона.

(?:шаблон) β€“ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΊΠ°ΠΊ ΠΈ '( )' Π½ΠΎ Π±Π΅Π· ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ ссылки

(?=шаблон) β€“ «заглядываниС» Π²ΠΏΠ΅Ρ€Π΅Π΄.

НапримСр /\w+(?=\t)/ соотвСтствуСт слову Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΈΠ΄Π΅Ρ‚ табуляция Π½ΠΎ символ '\t' Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

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

$s = Β«1+2-3*4Β»;

if ($s =~ /(\d)(?=-)/) # Наити Ρ†ΠΈΡ„Ρ€Ρƒ Π·Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ стоит '-'

{

print Β«$1\nΒ»; # Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ '2'

}

else { print «ошибка поиска\n»;}

(?!шаблон) β€“ «заглядываниС» Π²ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠΎ ΠΎΡ‚Ρ€ΠΈΡ†Π°Π½ΠΈΡŽ.

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

$s = Β«1+2-3*4Β»;

if ($s =~ /(\d)(?!\+)/) # Наити Ρ†ΠΈΡ„Ρ€Ρƒ Π·Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π΅ стоит '+'

{

print Β«$1\nΒ»; # Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ '2'

}

else { print «ошибка поиска\n»;}

(?ismx) – Β«Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅Β» ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹. Π£Π΄ΠΎΠ±Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π² ΡˆΠ°Π±Π»ΠΎΠ½Π°Ρ… Π³Π΄Π΅ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½ΡƒΠΆΠ½ΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ шаблона ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€.

ΠŸΡ€Π°Π²ΠΈΠ»Π° рСгулярного выраТСния. (regex)

1. Π›ΡŽΠ±ΠΎΠΉ символ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ сСбя самого Ссли это Π½Π΅ мСтасимвол. Π•сли Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ дСйствиС мСтасимвола Ρ‚ΠΎ ΠΏΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄ Π½ΠΈΠΌ '\'.

2. Π‘Ρ‚Ρ€ΠΎΠΊΠ° символов ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ строку этих символов. 

3. ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… символов (класс) Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ ΡΠΊΠΎΠ±ΠΊΠΈ '[]' это Π·Π½Π°Ρ‡ΠΈΡ‚ Ρ‡Ρ‚ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ мСстС ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚ΠΎΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π² скобках символ. Если ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ символ Π² скобках ΡΡ‚ΠΎ '^' – Π·Π½Π°Ρ‡ΠΈΡ‚ Π½Π΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… символов Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚ΠΎΡΡ‚ΡŒ Π² Π΄Π°Π½Π½ΠΎΠΌ мСстС выраТСния. Π’Π½ΡƒΡ‚Ρ€ΠΈ класса ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡ‚ΡŒ ΡΠΈΠΌΠ²ΠΎΠ» '-' ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰ΠΈΠΉ Π΄ΠΈΠ°ΠΏΠΏΠ°Π·ΠΎΠ½ символов. НапримСр a-z ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΌΠ°Π»Ρ‹Ρ… Π±ΡƒΠΊΠ² латинского Π°Π»Ρ„Π°Π²ΠΈΡ‚Π°, 0-9 – Ρ†ΠΈΡ„Ρ€Π° ΠΈ Ρ‚.Π΄.

4. ВсС символы, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ '\' ΠΊΠ°ΠΊ Π² языкС Π‘.

5. ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ΡΡ символом '|' Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅ Ρ‡Ρ‚ΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобок это ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ символ.

6. Π’Π½ΡƒΡ‚Ρ€ΠΈ рСгулярного выраТСния ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ Β«ΠΏΠΎΠ΄ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹Β» Π·Π°ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΈΡ… Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки ΠΈ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° Π½ΠΈΡ… ΠΊΠ°ΠΊ '\Π½ΠΎΠΌΠ΅Ρ€' ΠŸΠ΅Ρ€Π²Π°Ρ скобка обозначаСтся ΠΊΠ°ΠΊ '\1'.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Ρ‹

Π’ ΠŸΠ΅Ρ€Π» Π°ΡΡΠΎΡ†ΠΈΠ°Ρ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΈ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Π° ΡΠ·Ρ‹ΠΊΡƒ C ΠΠΈΠΆΠ΅ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Ρ‹ Π²ΡΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π² ΠΏΠΎΡ€ΡΠ΄ΠΊΠ΅ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°, Π² Π½Π°Ρ‡Π°Π»Π΅ строки ΡƒΠΊΠ°Π·Π°Π½Π° Π°ΡΡΠΎΡ†ΠΈΠ°Ρ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ.

ассоц. ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹

– β€“

лСвая Ρ‚Π΅Ρ€ΠΌΡ‹ ΠΈ лСвосторонныС списковыС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹

лСвая ->

– ++ –

правая **

правая ! ~ \ ΡƒΠ½Π°Ρ€Π½Ρ‹Π΅ + ΠΈ -

лСвая =~ !~

лСвая * / % x

лСвая + – .

лСвая << >>

– ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΡƒΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹

– < > <= >= lt gt le ge

– == != <=> eq ne cmp

лСвая &

лСвая | ^

лСвая &&

лСвая ||

– ..

правая ?:

правая = += -= *= ΠΈ Ρ‚.Π΄.

лСвая , =>

– ΠΏΡ€Π°Π²ΠΎΡΡ‚ΠΎΡ€ΠΎΠ½Π½ΠΈΠ΅ списковыС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹

лСвая not

лСвая and

лСвая or xor


Π’Π΅Ρ€ΠΌΡ‹ ΠΈ лСвосторонниС списковыС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹.

Π›ΡŽΠ±ΠΎΠΉ Ρ‚Π΅Ρ€ΠΌ ΠΈΠΌΠ΅Π΅Ρ‚ самый высокий ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚. К Ρ‚Π΅Ρ€ΠΌΡƒ относятся ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΈ ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, арифмСтичСскиС ΠΈ логичСскиС выраТСния Π² скобках, Π»ΡŽΠ±Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ Π² скобках. ЀактичСски Ρ‚Π°ΠΊΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π½Π΅Ρ‚ Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это просто ΡƒΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΈ списковыС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ просто ΠΎΠ½ΠΈ Π²Π΅Π΄ΡƒΡ‚ сСбя ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ функциям с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ Π² скобках. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ смотри Π³Π»Π°Π²Ρƒ Β«Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈΒ».

Если послС любого спикового ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ( print(), ΠΈ Ρ‚.Π΄.) ΠΈΠ»ΠΈ ΡƒΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° (chdir(), ΠΈ Ρ‚.Π΄.) слСдуСт лСвая круглая скобка, Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ скобок ΠΈΠΌΠ΅ΡŽΡ‚ Π½Π°ΠΈΠ²Ρ‹ΡΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚. Π’Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Если скобки ΠΎΡ‚ΡΡƒΡ‚ΡΠ²ΡƒΡŽΡ‚ Ρ‚ΠΎ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ списковых ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈΠ»ΠΈ Π½Π°ΠΈΠ²Ρ‹ΡΡˆΠΈΠΉ ΠΈΠ»ΠΈ наимСньший Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² справа ΠΈΠ»ΠΈ слСва ΠΎΡ‚ Π½Π΅Π³ΠΎ.

НапримСр:

@i = ('a ','b ', print 'c ', 'd ');

print Β«\nΒ»,@i,"\n";

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

c d

a b 1

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ списковый ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ print. Для запятых слСва ΠΎΡ‚ Π½Π΅Π³ΠΎ ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ‚ наимСньший ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚, Π½ΠΎ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΎΠΉ запятой.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ правая запятая воспринимаСтся ΠΊΠ°ΠΊ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ для print ΠΈ пСчатаСтся 'c d' Π° лСвая просто записываСт ΠΊΠΎΠ΄ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² массив @i ΠΈ послСдний print ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ это.


ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ '->'

Π’Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ Π² Π‘ ΠΈΠ»ΠΈ Π‘++ это инфиксный ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ пСрСадрСссации. Если справа ΠΎΡ‚ Π½Π΅Π³ΠΎ стоит [...] ΠΈΠ»ΠΈ {...} Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Ρ‚ΠΎ правая Ρ‡Π°ΡΡ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСпосрСдствСнной ΠΈΠ»ΠΈ символичСской ссылкой Π½Π° массив ΠΈΠ»ΠΈ Ρ…Π΅Ρˆ.

Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС правая сторона это ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ»ΠΈ простой скаляр содСрТащий имя ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Π° правая ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠ»ΠΈ имя класса. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ смотри Π³Π»Π°Π²Ρƒ Β«ΠšΠ»Π°ΡΡΡ‹Β».


ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ++ (ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚) ΠΈ – (Π΄Π΅ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚).

Π­Ρ‚ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ Π² Π‘. Если ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ стоит ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ измСняСтся Π½Π° 1 ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ. Если послС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΎ Π΅Π΅ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° измСняСтся послС примСнСния.

Π£ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π° ΠΊ строковым ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ Π² ΠŸΠ΅Ρ€Π» ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ΄Π½Ρƒ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ.

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ символ остаСтся Π² своСм классС (большиС, ΠΌΠ°Π»Ρ‹Π΅, Ρ†ΠΈΡ„Ρ€Ρ‹) ΠΈ учитываСтся пСрСнос ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ символа. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ строковыС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с Ρ†ΠΈΡ„Ρ€Π°ΠΌΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΊΠ°ΠΊ числовыС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅.

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

print ++($i = Β«09Β»); # Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Β«10Β»

print ++($i = Β«a9Β»); # Β«b0Β»

print ++($i = Β«azΒ»); # Β«baΒ»

print ++($i = Β«aZΒ»); # Β«bAΒ»


ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ** (Π²ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ)

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

print 4**2 # Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ 16

print -4**2 # Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ -16 Ρ‚.Π΅. -(4**2)


Π£Π½Π°Ρ€Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹.

'!' – логичСскоС ΠΎΡ‚Ρ€ΠΈΡ†Π°Π½ΠΈΠ΅

'-' – арифмСтичСский минус

'~' – побитная инвСрсия (Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΄ΠΎ 1)

'+' – арифмСтичСский плюс

'\' – ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ссылки Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ (ΠΊΠ°ΠΊ & Π² Π‘)


ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ «привязки» =~ ΠΈ !~ .

Π­Ρ‚ΠΈ Β«Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅Β» Ρ Π±Ρ‹ Π΄Π°ΠΆΠ΅ сказал ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΡ‡Π΅Π½ΡŒ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² ΠŸΠ΅Ρ€Π». МоТно Π΄Π°ΠΆΠ΅ Π½Π°Π·Π²Π°Ρ‚ΡŒ ΠΈΡ… Β«ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌΒ» Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ =~ логичСски связываСт Π»Π΅Π²ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ выраТСния с ΠΏΠ°Ρ‚Π΅Ρ€Π½ΠΎΠΌ (pattern – ΠΎΠ±Ρ€Π°Π·Π΅Ρ†, шаблон, модСль) Π² ΠΏΡ€Π°Π²ΠΎΠΉ. ΠŸΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΠΎΠΈΡΠΊ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΏΠ°Ρ‚Π΅Ρ€Π½Ρƒ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ΅Ρ‚ся Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ $_ ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ привязки ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ это с любой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π² Π»Π΅Π²ΠΎΠΉ Ρ‡Π°ΡΡ‚ΠΈ. Π›ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΠΈΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ успСх ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. Π•сли Π² ΠΏΡ€Π°Π²ΠΎΠΉ части вмСсто ΠΏΠ°Ρ‚Π΅Ρ€Π½Π° присутсвуСт Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ этого выраТСния воспринимаСтся ΠΊΠ°ΠΊ ΠΏΠ°Ρ‚Π΅Ρ€Π½. Однако это Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ эффСктивно Ρ‚.ΠΊ. ΠΏΠ°Ρ‚Π΅Ρ€Π½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π²ΠΎ врСмя исполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ‡Ρ‚ΠΎ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ ΡΠ½ΠΈΠ·ΠΈΡ‚ Π±Ρ‹ΡΡ‚родСйствиС. 

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ !~ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ =~ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΡ инвСнтируСтся (логичСскоС Β«Π½Π΅Ρ‚Β»). ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ этих ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² приводится Π² Π³Π»Π°Π²Π΅ Β«ΠŸΠ°Ρ‚Π΅Ρ€Π½Ρ‹Β».


ΠœΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»ΠΈΠΊΠ°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹.

'*' – арифмСтичСскоС ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅

'/' – арифмСтичСскоС Π΄Π΅Π»Π΅Π½ΠΈΠ΅

'%' – арифмСтичСский ΠΌΠΎΠ΄ΡƒΠ»ΡŒ

'x' – ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ повторСния

Π’ скалярном контСкстС Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ строку Π»Π΅Π²ΠΎΠΉ части ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½Π½ΡƒΡŽ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½ΠΎΠΉ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π² ΠΏΡ€Π°Π²ΠΎΠΉ части. Π’ списковом контСкстС, Ссли Π² Π»Π΅Π²ΠΎΠΉ части список Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Ρ… скобках – ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½Π½Ρ‹ΠΉ список.

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

print '*' x 5; # Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ '*****'

print (1,2) x 3; # Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ 121212


АддитивныС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹.

'+' – арифмСтичСский плюс

'-' – арифмСтичСский минус

'.' – конкатСнация (объСдинСниС) строк


ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ сдвига.

'<<' β€“ Π‘Π΄Π²ΠΈΠ³Π°Π΅Ρ‚ ΠΏΠΎΠ±ΠΈΡ‚Π½ΠΎ Π²Π»Π΅Π²ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ выраТСния Π² Π»Π΅Π²ΠΎΠΉ части Π½Π° количСство Π±ΠΈΡ‚ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π² ΠΏΡ€Π°Π²ΠΎΠΉ.