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

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

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

Π’ этой Π»Π΅ΠΊΡ†ΠΈΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ основных Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… Π² языкС Perl: скаляров, списков ΠΈ Ρ…ΡΡˆΠ΅ΠΉ. Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 6.1 для сравнСния ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ контСксты ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ обращСния ΠΊ скалярным ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ, элСмСнтам массивов ΠΈ Ρ…ΡΡˆΠ΅ΠΉ ΠΈ ΠΈΡ… срСзам.

Π’Π°Π±Π»ΠΈΡ†Π° 6.1. Π€ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ записи ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡΠ₯Ρ€Π°Π½ΠΈΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠžΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ (Π² Π»Π΅Π²ΠΎΠΉ части присваивания)@variableсписоквСсь массив @variableсписочный%variableΡ…ΡΡˆΠ²Π΅ΡΡŒ Ρ…ΡΡˆ %variableсписочный$variableскалярпросто скалярная пСрСмСннаяскалярный$variable[$index]скалярэлСмСнт массива @variable, Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ индСксом $indexскалярный@variable[@list]списоксрСз массива @variable, Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ списком индСксов @listсписочный@variable[$index]список (ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ элСмСнта)срСз массива @variable, Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ списком ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ индСкса $indexсписочный$variable{$key}скалярэлСмСнт Ρ…ΡΡˆΠ° %variableскалярный@variable{@list}список (Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ)срСз Ρ…ΡΡˆΠ° %variable, Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ списком ΠΊΠ»ΡŽΡ‡Π΅ΠΉ @listсписочный@variable{$key}список (ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ значСния)срСз Ρ…ΡΡˆΠ° %variable, Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ списком ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° $keyсписочный

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния ΠΎ Ρ…ΡΡˆΠ°Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΈΠ· справочной Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠ²ΡˆΠΈΡΡŒ ΠΊ Ρ€Π°Π·Π΄Π΅Π»Ρƒ ΠΎ Ρ‚ΠΈΠΏΠ°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…:


perldoc perldata


Π₯эши - это, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, самая популярная структура Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° Perl. Π‘Π΅Π· Π½ΠΈΡ… Π½Π΅ обходится Π½ΠΈ ΠΎΠ΄Π½Π° ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, вСдь ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΏΡ€ΠΎΡ‰Π΅, Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ - понятнСС. ΠœΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» этой Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, насколько ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈ просто ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ…ΡΡˆΠ°ΠΌΠΈ. ΠžΡΠΎΠ±Π΅Π½Π½Ρ‹ΠΉ интСрСс прСдставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ хранСния Π² ассоциативных массивах ссылок Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ структуры Π΄Π°Π½Π½Ρ‹Ρ…: массивы, Ρ…ΡΡˆΠΈ, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π­Ρ‚ΠΎ позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ слоТныС динамичСскиС структуры Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎ Ρ‡Π΅ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ сказано Π² Π»Π΅ΠΊΡ†ΠΈΠΈ 11, посвящСнной ссылкам.

ЛСкция 7. ВСкст, строки ΠΈ символы

Π’ этой Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ срСдства Ρ€Π°Π±ΠΎΡ‚Ρ‹ с тСкстовой ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ, ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈ строковыми Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ славится язык Perl, начиная с самых ΠΏΠ΅Ρ€Π²Ρ‹Ρ… вСрсий.

ЦСль Π»Π΅ΠΊΡ†ΠΈΠΈ: ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡƒΠ³Π»ΡƒΠ±Π»Π΅Π½Π½Ρ‹Π΅ знания ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΈ строковых Π΄Π°Π½Π½Ρ‹Ρ… Π² Perl ΠΈ ΠΎΡΠ²ΠΎΠΈΡ‚ΡŒ спСцифичСскиС ΠΏΡ€ΠΈΠ΅ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌΠΈ для ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ тСкстовой ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

Π―Π·Ρ‹ΠΊ программирования Perl, Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» ΡˆΠΈΡ€ΠΎΠΊΡƒΡŽ ΠΈΠ·Π²Π΅ΡΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΊΠ°ΠΊ срСдство ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ тСкстовой ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ - ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ΅, быстроС, ΠΌΠΎΡ‰Π½ΠΎΠ΅, Π³ΠΈΠ±ΠΊΠΎΠ΅. Π›Π°Ρ€Ρ€ΠΈ Π£ΠΎΠ»Π» создал Perl, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ свою Тизнь, ΠΊΠΎΠ³Π΄Π° Π΅ΠΌΡƒ, ΠΌΠΎΠ»ΠΎΠ΄ΠΎΠΌΡƒ систСмному администратору, ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… объСмов Π΄Π°Π½Π½Ρ‹Ρ…, прСимущСствСнно тСкстовых. Удобство Ρ€Π°Π±ΠΎΡ‚Ρ‹ с тСкстом Π·Π°Π»ΠΎΠΆΠ΅Π½ΠΎ практичСски Π²ΠΎ всСх языковых конструкциях: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, строковый контСкст Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ автоматичСскоС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ чисСл ΠΈ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Ρ…ΡΡˆΠ° ΠΊ строкам. Π’ систСму программирования Perl встроСны Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с символьной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ. НавСрноС, самоС ΠΌΠΎΡ‰Π½ΠΎΠ΅ срСдство Ρ€Π°Π±ΠΎΡ‚Ρ‹ с тСкстовой ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ - ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ - эффСктивно Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² ядрС Perl. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ срСдства ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ тСкста Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π² стандартных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ…. Π•Ρ‰Π΅ большС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ классов для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с тСкстовыми Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² модулях ΠΈΠ· рСпозитория CPAN.

ВСкстовая информация хранится Π² Perl-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π² скалярных ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Perl Π½Π΅ Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚ искусствСнных ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ Π½Π° использованиС рСсурсов ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°, обычная ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… Π½Π° Perl - считываниС всСго тСкста ΠΈΠ· Ρ„Π°ΠΉΠ»Π° вмСстС с раздСлитСлями строк Π² ΠΎΠ΄Π½Ρƒ ΡΠΊΠ°Π»ΡΡ€Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Ρ‚Π΅ΠΌ эффСктивно ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π΅Π³ΠΎ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Perl ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, содСрТащиС ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ "строковыми" лишь для краткости, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ "скалярная пСрСмСнная, содСрТащая строковоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅".

Π£ΠΆΠ΅ извСстныС ΠΈΠ· Π»Π΅ΠΊΡ†ΠΈΠΈ 2 строковыС Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹, Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Π΅ Π² апострофы ΠΈ Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒΡΡ Π² Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅:


'строка Π² апострофах' ΠΈΠ»ΠΈ q(строка Π² апострофах) "строка Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ…" ΠΈΠ»ΠΈ qq(строка Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ…)


Подобно Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΡŒΠ½ΠΎΠΌΡƒ списку слов qw(), упомянутому Π² Π»Π΅ΠΊΡ†ΠΈΠΈ Π»Π΅ΠΊΡ†ΠΈΠΈ 5, строковыС Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹ Π² этом Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ скобками ΠΈ практичСски Π»ΡŽΠ±Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π½Ρ‹ΠΌΠΈ символами: (), {}, [] , <>, //, \\, !! ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² качСствС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»Π΅ΠΉ строк Ρ‚Π°ΠΊΠΈΡ… символов, ΠΊΠ°ΠΊ &&, ||, %%, ##, '' ΠΈΠ»ΠΈ $$, допустимо, Π½ΠΎ Π½Π΅ рСкомСндуСтся, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΠΎΠΆΠ΅Ρ‚ ввСсти Π² Π·Π°Π±Π»ΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅ читатСля ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠŸΡ€Π°Π²ΠΈΠ»Π° интСрполяции Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π½Π° эту Ρ„ΠΎΡ€ΠΌΡƒ записи строковых Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ².

Π’ Perl Π΅ΡΡ‚ΡŒ особСнныС строки, ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠΈΠ΅ Π½Π° Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹: это строки, Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ Π² ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹Π΅ апострофы (back-quotes, backticks) ``, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ‚Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ эквивалСнтная запись Π² Π²ΠΈΠ΄Π΅ qx(). ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΡ… строк Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΡ… содСрТимоС рассматриваСтся ΠΊΠ°ΠΊ синхронный Π²Ρ‹Π·ΠΎΠ² внСшнСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы, которая выполняСтся Π²ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ Perl-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ЀактичСски это опСрация выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ внСшнСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ становится Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ конструкции qx(). ΠŸΡ€ΠΈ этом Π² Π½Π΅ΠΉ производится интСрполяция. Π’Π°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² срСдС MS Windows ΠΈΠ»ΠΈ Linux с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ dir ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ список MP3-Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ:


$music_files = `dir *.mp3`; # ΠΈΠ»ΠΈ qx(dir \*.mp3)


Π’Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ услугами любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. НСдаром Perl часто Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ "ΡΠΊΠ»Π΅ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌ языком" (glue language): с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Perl-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌ, ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΈΡ… выполнСния ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΏΠΎ ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΈΡŽ программиста. Π’Π°ΠΊ, упомянутый Π² Π»Π΅ΠΊΡ†ΠΈΠΈ 1 ΠΏΡ€ΠΈΠ΅ΠΌ использования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ-Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ² ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» Π² Perl дальнСйшСС Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅. Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π² Π»Π΅ΠΊΡ†ΠΈΠΈ 16.

ВстрСчаСтся Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Ρ‚ΠΈΠΏ строковых Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ², Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… V-строки ("V-strings" - строки вСрсий), хотя ΠΎΠ½ считаСтся ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ.


v1.20.300.4000 # Ρ‚ΠΎ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ "\x{1}\x{14}\x{12c}\x{fa0}" v9786 # "смайлик" ? (символ Unicode \x{263A}) v79.107.33 # строка 'Ok!' 79.107.33 # Π² Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π΅ с нСсколькими Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π±Π΅Π· "v"


V-строки ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ для сравнСния "Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ²" вСрсий с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ строкового сравнСния, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:


$version = v5.8.7; print "ВСрсия ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚\n" if $version ge v5.8.0;


V-строки ΠΈΠ½ΠΎΠ³Π΄Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ для записи сСтСвых адрСсов IPv4, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: v127.0.0.1.

ΠšΡ€ΠΎΠΌΠ΅ escape-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ, описанных Π² Π»Π΅ΠΊΡ†ΠΈΠΈ 2, Π² Perl Π΅ΡΡ‚ΡŒ особыС ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ для прСобразования символов Π² строковом Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π΅. Они ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 7.1. Π‘ ΠΈΡ… ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ прСобразуСтся Π»ΠΈΠ±ΠΎ ΠΎΠ΄ΠΈΠ½ символ, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π·Π° escape-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ, Π»ΠΈΠ±ΠΎ нСсколько символов Π΄ΠΎ ΠΎΡ‚ΠΌΠ΅Π½ΡΡŽΡ‰Π΅ΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Π’Π°Π±Π»ΠΈΡ†Π° 7.1. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‰ΠΈΠ΅ escape-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈΠ£ΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΠœΠ½Π΅ΠΌΠΎΠ½ΠΈΠΊΠ° ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅\uUpper caseΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ символ ΠΊ Π²Π΅Ρ€Ρ…Π½Π΅ΠΌΡƒ рСгистру\lLower caseΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ символ ΠΊ Π½ΠΈΠΆΠ½Π΅ΠΌΡƒ рСгистру\UUpper caseΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ символы Π΄ΠΎ \E ΠΊ Π²Π΅Ρ€Ρ…Π½Π΅ΠΌΡƒ рСгистру\LLower caseΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ символы Π΄ΠΎ \E ΠΊ Π½ΠΈΠΆΠ½Π΅ΠΌΡƒ рСгистру\QQuoteΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ символов Π²ΠΏΠ»ΠΎΡ‚ΡŒ Π΄ΠΎ \E\EEndΠ·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ дСйствиС \U ΠΈΠ»ΠΈ \L ΠΈΠ»ΠΈ \Q

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ этих ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‰ΠΈΡ… escape-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ:


use locale; # для ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠΈΡ€ΠΈΠ»Π»ΠΈΡ†Ρ‹ $name = 'мария'; # Π±ΡƒΠ΄Π΅ΠΌ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ print "\u$name"; # Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½ΠΎ: ΠœΠ°Ρ€ΠΈΡ print "\U$name\E"; # Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½ΠΎ: МАРИЯ print "\Q$name\E"; # Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½ΠΎ: \ΠΌ\Π°\Ρ€\ΠΈ\я