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

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

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

ΠŸΡ€ΠΎΡ‰Π΅ говоря Ссли Π² Π»Π΅Π²ΠΎΠΉ части выраТСния имССтся Π²Π²ΠΈΠ΄Ρƒ ΠΎΠ΄Π½ΠΎ СдинствСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ – Ρ‚ΠΎ это скалярный контСкст. Если мноТСство Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ – список.

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

$var1 = <>; # ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ строку Ρ„Π°ΠΉΠ»Π°

@var1 = <>; # ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ всС строки Ρ„Π°ΠΉΠ»Π° Π² массив @var1

$var1 = (1,2,3); # $var = 3 – количСство элСмСнтов

@var1 = (1,2,3); # Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ массива @var1 с элСмСнтами 1,2,3


БкалярныС значСния.

ВсС Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠŸΠ΅Ρ€Π» это скаляры, массивы скаляров ΠΈ Ρ…Π΅ΡˆΠΈ скаляров.

БкалярныС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ числа, строки ΠΈ ссылки.

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ числа – строки происходит автоматичСски ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

Бкаляр ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ СдинствСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, хотя это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ссылка Π½Π° массив скаляров. Π’Π°ΠΊ – ΠΊΠ°ΠΊ ΠŸΠ΅Ρ€Π» сам ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ числа Π² строки ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚ Ρ‚ΠΎ программисту Π½Π΅Ρ‚ нСобходимости Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ Ρ‚ΠΎΠΌ Ρ‡Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция.

Π’ ΠŸΠ΅Ρ€Π» Π½Π΅ сущСствуСт Ρ‚ΠΈΠΏΠΎΠ² «строка» ΠΈΠ»ΠΈ «число» ΠΈΠ»ΠΈ Β«Ρ„Π°ΠΉΠ»Β» ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎ Ρ‚ΠΎ Π΅Ρ‰Π΅.

Π­Ρ‚ΠΎ контСкстно зависимый ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½Ρ‹ΠΉ язык для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с тСкстами.

Бкаляр ΠΈΠΌΠ΅Π΅Ρ‚ логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ "TRUE" (истина) Ссли это Π½Π΅ нулСвая строка ΠΈΠ»ΠΈ число Π½Π΅ Ρ€Π°Π²Π½ΠΎΠ΅ 0.

Π’ ΠŸΠ΅Ρ€Π» сущСствуСт Π΄Π²Π° Ρ‚ΠΈΠΏΠ° Π½ΡƒΠ»Π΅Π²Ρ‹Ρ… (null) скаляров – ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ (defined) ΠΈ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ (undefined). НС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ возвращаСтся ΠΊΠΎΠ³Π΄Π° Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ сущСствуСт. НапримСр Π½Π΅ извСстная пСрСмСнная, ΠΊΠΎΠ½Π΅Ρ† Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ ошибка. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ defined() Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ состояниС.

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ элСмСнтов массива Ρ‚Π°ΠΊ ΠΆΠ΅ являСтся скаляром ΠΈ начинаСтся символами $# ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρƒ csh. ЀактичСски $#var1 – это индСкс послСднСго элСмСнта массива. НуТно ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт ΠΈΠΌΠ΅Π΅Ρ‚ индкСс 0 поэтому количСство элСмСнтов опрСдСляСтся ΠΊΠ°ΠΊ $#var1+1 . ΠŸΡ€ΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠ΅ значСния $#var1 – ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ Π΄Π»ΠΈΠ½Ρƒ массива ΠΈ Ρ€Π°Π·Ρ€ΡƒΡˆΠΈΡ‚ «оставлСнныС» значСния.

ΠŸΡ€ΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠ΅ значСния элСмСнту массива с индСксом большС Ρ‡Π΅ΠΌ $#var1

– ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива, Π° присвоСниС Π΅ΠΌΡƒ Π½ΡƒΠ»Π΅Π²ΠΎΠ³ΠΎ списка – ΠΎΠ±Π½ΡƒΠ»ΠΈΡ‚.

Π’ скалярном контСкстС имя массива Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΅Π³ΠΎ Π΄Π»ΠΈΠ½Ρƒ (для списка возвращаСтся послСдний элСмСнт).

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

@var1 = (4, 3, 2, 1); # ΠŸΡ€ΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠ΅ значСния элСмСнтам массива

$i = @var1; # ИспользованиС скалярного контСкста

print $i; # ΠŸΠ΅Ρ‡Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° 4 – ΠΊΠΎΠ»-Π²ΠΎ элСмСнтов

print @var1; # Бписковый контСкст, ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ всСх элСмСнтов.

Для ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ получСния скалярного значСния ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ scalar().

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

print scalar(@var1); # Π’Ρ‹Π²ΠΎΠ΄ Π΄Π»ΠΈΠ½Ρ‹ массива Π° Π½Π΅ Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ

Π₯Сш Π² скалярном контСкстС Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Β«trueΒ» Ссли сущСствуСт хотя Π±Ρ‹ ΠΎΠ΄Π½Π° ΠΏΠ°Ρ€Π° Β«ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Β». ЀактичСски возвращаСтся строка Ρ‚ΠΈΠΏΠ° 2/8 Π³Π΄Π΅ 8 – количСство Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… «ячССк» памяти, Π° 2 – количСство ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ….

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρ‹ скаляров.

Числа ΠΏΠΈΡˆΡƒΡ‚ΡΡ стандартно:

123

123.123

0.12

.12E-10

0xABCD # ШСстнадцСтиричная запись

0377 # Если 0 Π² Π½Π°Ρ‡Π°Π»Π΅ – Π²ΠΎΡΡŒΠΌΠ΅Ρ€ΠΈΡ‡Π½Π°Ρ

123_456_123 # Π’Π°ΠΊ Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ для удобства чтСния.

Π‘Ρ‚Ρ€ΠΎΠΊΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΌΠΈ (') ΠΈΠ»ΠΈ Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌΠΈ (") ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ:

'Ровняйсь, смирно!'

Β«ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅ΠΌΡΡ ΠΈ спасСмся.Β»

Бпособов обозначСния строк ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ. ΠŸΠ»ΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ смотритС описаниС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° qq.

Π’ Ρ…Π΅ΡˆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Ссли индСкс Π½Π΅ содСрТит ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ².

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

$var1{first} Ρ‚ΠΎ ΠΆΠ΅ Ρ‡Ρ‚ΠΎ ΠΈ $var1{'first'}

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½ΠΎΠΉ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΎΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡ‚ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π» ΠΈΠ½Π°Ρ‡Π΅ строка воспримСтся ΠΊΠ°ΠΊ имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚Π°ΠΊ-ΠΊΠ°ΠΊ Π² ΠΈΠΌΠ΅Π½Π°Ρ… Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ использованиС ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ.

ЗапрСщаСтся Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ… ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹ __LINE__ (Π½ΠΎΠΌΠ΅Ρ€ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ строки ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹), __FILE__ (Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Ρ„Π°ΠΉΠ»).

Для обозначСния ΠΊΠΎΠ½Ρ†Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π»ΠΈΡ‚Π΅Ρ€Π°Π» __END__

Π’Π΅ΡΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ тСкст игнорируСтся, Π½ΠΎ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Ρ„Π°ΠΉΠ»Π° DATA.

Π‘Π»ΠΎΠ²Π° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½Π΅ ΠΏΠΎΠ΄Π΄Π°ΡŽΡ‰ΠΈΠ΅ΡΡ Π½ΠΈ ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ½Ρ‚Π΅ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ строки Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ… поэтому рСкомСндуСтся ΠΈΠΌΠ΅Π½Π° ΠΌΠ΅Ρ‚ΠΎΠΊ ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΠΈΡΠ°Ρ‚ΡŒ большими Π±ΡƒΠΊΠ²Π°ΠΌΠΈ для избСТания Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ³ΠΎ Β«ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π°Β» с Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ словами.

Π’ ΠŸΠ΅Ρ€Π» Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ тСкст Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° прямо Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

Π’Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ "here-doc" (здСсь тСкст) ΠΌΠ΅Ρ‚ΠΎΠ΄. ΠžΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ΡΡ символами << Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΈΠ΄Π΅Ρ‚ слово-ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒ.

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

print <<EOF; # ВсС строки Π΄ΠΎ EOF – тСкст для ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ.

Π­ΠΉ Π²Ρ‹ Ρ‚Ρ€ΠΎΠ΅, ΠΈΠ΄ΠΈΡ‚Π΅ Π΄Π²ΠΎΠ΅ сюда!

Полковник Бавонькин.

EOF


ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρ‹ списков.

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

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

@var1 = (1, 2, 'ΠΏΡ€ΠΈΠ²Π΅Ρ‚', 1.2); # ΠŸΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ элСмСнтам.

Π³Π΄Π΅

$var1[0] = 1,

$var1[1] = 2,

$var1[2] = 'ΠΏΡ€ΠΈΠ²Π΅Ρ‚'

$var1[3] = 1.2


$var1 = (1, 2, 'ΠΏΡ€ΠΈΠ²Π΅Ρ‚', 1.2);

Π° здСсь $var1 = 1.2 Ρ‚.Π΅. послСднСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ списка.

ДопускаСтся ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π² спискС Π΄Ρ€ΡƒΠ³ΠΈΠ΅ списки, Π½ΠΎ Π² ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΌ спискС ΡƒΠΆΠ΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Π½Π°Ρ‡Π°Π»ΠΎ ΠΈ ΠΊΠΎΠ½Π΅Ρ† Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… списков.

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

@s1 = (1, 2, 3); # ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ список

@s2 = (6, 7, 8); # Π’Ρ‚ΠΎΡ€ΠΎΠΉ

@s = (0, @s1, 4, 5, @s2, 9, 10); # Π’ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ списки @s1 ΠΈ @s2

print @s; # Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: 012345678910 β€“ значСния Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ².


Бписок Π±Π΅Π· элСмСнтов обозначаСстя ΠΊΠ°ΠΊ () ΠΈ называСтся Π½ΡƒΠ»ΡŒ-списком.

БписковоС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡ‚ΡŒ ΠΊΠ°ΠΊ имя массива, Π½ΠΎ ΠΏΡ€ΠΈ этом Π΅Π³ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ€Π°Ρ‚ΡŒ Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки.

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

print ('ΡΠ½Π²Π°Ρ€ΡŒ','Ρ„Π΅Π²Ρ€Π°Π»ΡŒ','ΠΌΠ°Ρ€Ρ‚')[1];

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: Ρ„Π΅Π²Ρ€Π°Π»ΡŒ

Бписок ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ присвоСн списку Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт Π² спискС Π² Π»Π΅Π²ΠΎΠΉ части выраТСния допустим ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ списку Π² ΠΏΡ€Π°Π²ΠΎΠΉ части.

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

($a, $b, $c) = (1, 2, 3); # $a = 1, $b = 2, $c = 3

ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ списков Π² скалярном контСкстС Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ количСство присвоСнных элСмСнтов.

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

$x = (($a, $b, $c) = (1,2)); # Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ $x=2

Π’ случаС присваивания списка Ρ…Π΅ΡˆΡƒ список разсматриваСтся ΠΊΠ°ΠΊ ΠΏΠ°Ρ€Ρ‹: ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

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

%Π΄Π½ΠΈ_мСсяца = ('ΡΠ½Π²Π°Ρ€ΡŒ', 31, 'Ρ„Π΅Π²Ρ€Π°Π»ΡŒ', 30);

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: $Π΄Π½ΠΈ_мСсяца{ΡΠ½Π²Π°Ρ€ΡŒ} = 31, $Π΄Π½ΠΈ_мСсяца{Ρ„Π΅Π²Ρ€Π°Π»ΡŒ} = 30

Для удобства записи ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ с => .

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

%Π΄Π½ΠΈ_мСсяца = (

ΡΠ½Π²Π°Ρ€ΡŒ => 31,

Ρ„Π΅Π²Ρ€Π°Π»ΡŒ => 30,

);


Π’ΠΈΠΏ typeglobs

Π’ ΠŸΠ΅Ρ€Π» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Ρ‚ΠΈΠΏ typeglog для записи массива всСх ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Π’Π°ΠΊΠΈΠ΅ массивы Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с символа '*'. Π˜Ρ… ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ссылок Π½Π° массивы ΠΈ Ρ…Π΅ΡˆΠΈ, Π½ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΉ вСрсии ΠŸΠ΅Ρ€Π» ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ссылки поэтому это дСлаСтся ΠΎΡ‡Π΅Π½ΡŒ Ρ€Π΅Π΄ΠΊΠΎ. ЕдинствСнно Π³Π΄Π΅ это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ‚Π°ΠΊ это для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со ссылками Π½Π° Ρ„Π°ΠΉΠ»Ρ‹. НапримСр Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ссылку Π½Π° Ρ„Π°ΠΉΠ» Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ Ρ‚ΠΎ это Π»ΡƒΡ‡ΡˆΠ΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

sub new_sub

{ local *IN; # Бсылка Π½Π° Ρ„Π°ΠΉΠ»

open (IN, Β«testΒ») || return undef; # ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ». Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΏΡ€ΠΈ ошибкС.

.........

return;

}

Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ это описано Π² Π³Π»Π°Π²Π΅ Бсылки.

ВстроСнныС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠŸΠ΅Ρ€Π»

ΠžΠΏΠΈΡΠ°Π½Π½Ρ‹Π΅ Π² Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Π² ΠŸΠ΅Ρ€Π» ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ значСния.

Они ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ΡΡ нСсколько Π½Π΅ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½ΠΎ для Β«Π³Π»Π°Π·Π°Β» программистов Ρ‚.ΠΊ. состоят ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· Π΄Π²Ρƒ символов ΠΏΡ€ΠΈΡ‡Π΅ΠΌ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ это '$' символо с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ ΠΈΠΌΠ΅Π½Π° всСх ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ часто Π½Π΅ Π±ΡƒΠΊΠ²Π΅Π½Π½ΠΎ-Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ символ. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈΡ… Β«Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈΒ» Π±ΡƒΠΊΠ²Π΅Π½Π½Ρ‹ΠΌΠΈ синонимами Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

use English;

Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π²Ρ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ указатСля Ρ„Π°ΠΉΠ»ΠΎΠ² Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ:

use FileHandle;

послС этого ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ просто ΠΏΠΈΡΠ°Ρ‚ΡŒ:

ΠΌΠ΅Ρ‚ΠΎΠ΄ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

ΠΈΠ»ΠΈ

ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ -> ΠΌΠ΅Ρ‚ΠΎΠ΄(Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅)


НиТС приводятся ΠΈΠΌΠ΅Π½Π° ΠΊΠ°ΠΊ Π² ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠΉ Ρ‚Π°ΠΊ ΠΈ Π² Π΄Π»ΠΈΠ½Π½ΠΎΠΉ (словСсной) Ρ„ΠΎΡ€ΠΌΠ΅.

НСкоторыС ΠΈΠ· встроСнных ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠΌΠ΅ΡŽΡ‚ доступ Ρ‚ΠΎΡŒΠΊΠΎ Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ поэтому ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ просто Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

$_

$ARG

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ – ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π²Π²ΠΎΠ΄Π° ΠΈ поиска. Π’ΠΎ Π΅ΡΡ‚ΡŒ Ссли Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½Π° никакая пСрСмСнная Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ эта.

$Ρ†ΠΈΡ„Ρ€Π°

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Π΅ подстроку Π² послСднСм поискС ΠΊΠΎΠ³Π΄Π° шаблон содСрТит мСтасимволы Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Ρ… скобках. Π¦ΠΈΡ„Ρ€Π° Π² Π΄Π°Π½Π½ΠΎΠΌ случаС это Π½ΠΎΠΌΠ΅Ρ€ скобок. ΠŸΠ΅Ρ€Π²Π°Ρ подстрока ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΎΠΌΠ΅Ρ€ 1.

$&

$MATCH

НайдСнная подстрока Π² послСднСм поискС ΠΏΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ.

$`

ΠŸΠΎΠ΄ΡΡ‚Ρ€ΠΎΠΊΠ° ΠΏΡ€Π΅Π΄ΡˆΠ΅Π²ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠΉ подстрокС.

$'

$POSTMATCH

ΠŸΠΎΠ΄ΡΡ‚Ρ€ΠΎΠΊΠ° ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Π·Π° Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠΉ подстрокой.

$+

$LAST_PAREN_MATCH

ΠŸΠΎΠ΄ΡΡ‚Ρ€ΠΎΠΊΠ° найдСнная Π² поискС с Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ ΠΏΠΎ Β«ΠΈΠ»ΠΈΒ».

$*

$MULTILINE_MATCHING

Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ€Π°Π²Π½Ρ‹ΠΌ 1 Ρ‚ΠΎ пСрСмСнная Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ осущСствляСтся поиск Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ многосторочной Ρ‚.Π΅. содСрТащСй символы '\n' – ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ строки. Если Π·Π½Π°Ρ‡Π΅ΠΈΠ΅ Ρ€Π°Π²Π½ΠΎ 0 Ρ‚ΠΎ пСрСмСнная считаСтся однострочной. Π’ ΠŸΠ΅Ρ€Π» вСрсии 5 ΠΈ Π²Ρ‹ΡˆΠ΅ Π½Π΅ рСкомСндуСстя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эту ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ.