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

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

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

Π’ Perl имССтся нСсколько Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ прСобразования строкового прСдставлСния числа Π² числовоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Ѐункция hex() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ дСсятичноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ выраТСния, прСдставлСнного ΠΊΠ°ΠΊ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚ΠΈΡ€ΠΈΡ‡Π½ΠΎΠ΅ число Π² Π²ΠΈΠ΄Π΅ строки:


$hexadecimal_as_string = '0x2F'; $decimal_number = hex($hexadecimal_as_string); # Π±ΡƒΠ΄Π΅Ρ‚ 47


Ѐункция oct() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ дСсятичноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ строкового выраТСния, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ запись Π²ΠΎΡΡŒΠΌΠ΅Ρ€ΠΈΡ‡Π½ΠΎΠ³ΠΎ числа:


$octal_as_string = '0777'; $decimal_number = oct($octal_as_string); # Π±ΡƒΠ΄Π΅Ρ‚ 511


Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ oct() ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊ дСсятичному Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ΅ ΠΈΠ»ΠΈ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚ΠΈΡ€ΠΈΡ‡Π½ΠΎΠ΅ число, записанноС Π² Π²ΠΈΠ΄Π΅ строки:


$binary_as_string = '0b011001'; $decimal_number = oct($binary_as_string); # Π±ΡƒΠ΄Π΅Ρ‚ 25 $hexadecimal_as_string = '0x19'; $decimal_number = oct($hexadecimal_as_string); # Π±ΡƒΠ΄Π΅Ρ‚ 25


Ну Π° строку, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ число Π² дСсятичной систСмС счислСния, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊ числу, помСстив Π΅Π΅ Π² числовой контСкст:


$pi_as_string = '3.141592653'; # число Пи Π² Π²ΠΈΠ΄Π΅ строки $circle_length = 2 * $pi_as_string * $radius;


Ѐункция sprintf() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ строку, которая сформирована Π² соотвСтствии с ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ форматирования, заимствованными ΠΈΠ· языка C: Π½Π° основС Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° прСобразования, Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΡƒΡŽ строку ΠΏΠΎΠ΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΎΡ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ значСния ΠΈΠ· списка ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅ Π²Ρ‹Π·ΠΎΠ² этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ выглядит Ρ‚Π°ΠΊ: sprintf(ЀОРМАВ, БПИБОК ΠΠ Π“Π£ΠœΠ•ΠΠ’ΠžΠ’). Π’ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ прСобразования располагаСтся любой тСкст, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ указания прСобразования. КаТдоС ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ начинаСтся с символа ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π° (%) ΠΈ заканчиваСтся символом, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΌ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ прСобразования ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 7.2.

Π’Π°Π±Π»ΠΈΡ†Π° 7.2. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ sprintfΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅Π‘ΠΈΠ½ΠΎΠ½ΠΈΠΌΠ Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡΠœΠ½Π΅ΠΌΠΎΠ½ΠΈΠΊΠ° символа%%Π—Π½Π°ΠΊ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π°%%cΠ‘ΠΈΠΌΠ²ΠΎΠ» с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ Π² ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅Character%sΠ‘Ρ‚Ρ€ΠΎΠΊΠ°String%d%iΠ¦Π΅Π»ΠΎΠ΅ со Π·Π½Π°ΠΊΠΎΠΌ Π² дСсятичном Π²ΠΈΠ΄Π΅Decimal, Integer%uΠ¦Π΅Π»ΠΎΠ΅ Π±Π΅Π· Π·Π½Π°ΠΊΠ° Π² дСсятичном Π²ΠΈΠ΄Π΅Unsigned%bΠ¦Π΅Π»ΠΎΠ΅ Π±Π΅Π· Π·Π½Π°ΠΊΠ° Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅Binary%oΠ¦Π΅Π»ΠΎΠ΅ Π±Π΅Π· Π·Π½Π°ΠΊΠ° Π² Π²ΠΎΡΡŒΠΌΠ΅Ρ€ΠΈΡ‡Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅Octal%x%XΠ¦Π΅Π»ΠΎΠ΅ Π±Π΅Π· Π·Π½Π°ΠΊΠ° Π² ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅heXadecimal%e%EΠ¦Π΅Π»ΠΎΠ΅ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ Π² Π½Π°ΡƒΡ‡Π½ΠΎΠΉ Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈExponential%f%FЧисло с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ Π² Π²ΠΈΠ΄Π΅ дСсятичной Π΄Ρ€ΠΎΠ±ΠΈFloat%g%GЧисло с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ %e ΠΈΠ»ΠΈ %f

ΠœΠ΅ΠΆΠ΄Ρƒ Π·Π½Π°ΠΊΠΎΠΌ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π° ΠΈ символом Π² ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΈ прСобразования ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ прСобразования, основныС ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 7.3.

Π’Π°Π±Π»ΠΈΡ†Π° 7.3. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ прСобразования Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ sprintfΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π’Ρ‹ΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² sprintf()Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡΡ‡ΠΈΡΠ»ΠΎΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Π°Ρ ΡˆΠΈΡ€ΠΈΠ½Π° поля Π²Ρ‹Π²ΠΎΠ΄Π° для Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° прСобразования; Ссли ΠΎΠ½Π° Π½Π΅ Π·Π°Π΄Π°Π½Π° ΠΈΠ»ΠΈ мСньшС ΡˆΠΈΡ€ΠΈΠ½Ρ‹ значСния, Ρ‚ΠΎ устанавливаСтся Ρ€Π°Π²Π½ΠΎΠΉ ΡˆΠΈΡ€ΠΈΠ½Π΅ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ значСния'<%5s>', 25<   25>.Ρ‡ΠΈΡΠ»ΠΎΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Ρ†ΠΈΡ„Ρ€ послС дСсятичной Ρ‚ΠΎΡ‡ΠΊΠΈ Π² Π΄Ρ€ΠΎΠ±Π½ΠΎΠΌ числС'<%.5f>', 0.25<0.25000>Максимальная ΡˆΠΈΡ€ΠΈΠ½Π° поля Π²Ρ‹Π²ΠΎΠ΄Π°, Π΄ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ усСкаСтся длинная строка'<%.5s>', '5' x 10<55555>ΠΏΡ€ΠΎΠ±Π΅Π»Π’Ρ‹Π²ΠΎΠ΄ ΠΏΡ€ΠΎΠ±Π΅Π»Π° ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ числом'<% d>', 25'< 25>'+Π’Ρ‹Π²ΠΎΠ΄ плюса ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ числом'<%+d>', 25'<+25>'0Π’Ρ‹Π²ΠΎΠ΄ Π½ΡƒΠ»Π΅ΠΉ, Π° Π½Π΅ ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² ΠΏΡ€ΠΈ Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠΈ ΠΏΠΎ ΠΏΡ€Π°Π²ΠΎΠΌΡƒ ΠΊΡ€Π°ΡŽ поля'<%05s>', 25'<00025>'-Π’Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ значСния ΠΏΠΎ Π»Π΅Π²ΠΎΠΌΡƒ ΠΊΡ€Π°ΡŽ поля<%-5s>, 25'<25 >'#Π’Ρ‹Π²ΠΎΠ΄ ΠΏΠ΅Ρ€Π΅Π΄ Π²ΠΎΡΡŒΠΌΠ΅Ρ€ΠΈΡ‡Π½Ρ‹ΠΌ числом 0, ΠΏΠ΅Ρ€Π΅Π΄ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Ρ‹ΠΌ числом 0x, ΠΏΠ΅Ρ€Π΅Π΄ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΌ числом 0b'<%#x>',25'<0x19>'

ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ sprintf() ΠΊ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ΠΈΠ· списка Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² примСняСтся ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ вставляСтся Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΡƒΡŽΡ‰ΡƒΡŽ строку Π½Π° мСсто указания прСобразования. НапримСр, Ссли шаблон форматирования ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ sprintf() Π·Π°Π΄Π°Π½Ρ‹ Ρ‚Π°ΠΊ:


$format = "'%12s' Π°Π³Π΅Π½Ρ‚Π° <%03d> = '%+-10.2f'"; @list = ('Π’Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Π°', 7, 36.6); $formatted_string = sprintf($format, @list);


Ρ‚ΠΎ послС выполнСния ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ прСдлоТСния Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ $formatted_string Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ такая отформатированная строка:


' Π’Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Π°' Π°Π³Π΅Π½Ρ‚Π° <007> = '+36.60 '


ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ этого ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

[x]. %12s - ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π² строку (string) ΠΈ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² ΠΏΠΎΠ»Π΅ ΡˆΠΈΡ€ΠΈΠ½ΠΎΠΉ Π² 12 символов с Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ Π²ΠΏΡ€Π°Π²ΠΎ (Ρ‚. ΠΊ. ΡˆΠΈΡ€ΠΈΠ½Π° поля ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ);

[x]. %03d - ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π² дСсятичноС Ρ†Π΅Π»ΠΎΠ΅ (decimal) ΠΈ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² ΠΏΠΎΠ»Π΅ ΡˆΠΈΡ€ΠΈΠ½ΠΎΠΉ Π² 3 Ρ†ΠΈΡ„Ρ€Ρ‹ с Π²Π΅Π΄ΡƒΡ‰ΠΈΠΌΠΈ нулями (Ρ‚. ΠΊ. ΡˆΠΈΡ€ΠΈΠ½Π° поля Π·Π°Π΄Π°Π½Π° с Π²Π΅Π΄ΡƒΡ‰ΠΈΠΌ Π½ΡƒΠ»Π΅ΠΌ) ΠΈ Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ Π²ΠΏΡ€Π°Π²ΠΎ (ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΡˆΠΈΡ€ΠΈΠ½Π° ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ);

[x]. %+-10.2f - ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π² Π΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ число (float) с явным Π·Π½Π°ΠΊΠΎΠΌ (Ρ‚.ΠΊ. ΡƒΠΊΠ°Π·Π°Π½ +) ΠΈ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² ΠΏΠΎΠ»Π΅ ΡˆΠΈΡ€ΠΈΠ½ΠΎΠΉ Π² 10 Ρ†ΠΈΡ„Ρ€, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… 2 отводятся Π½Π° Π΄Ρ€ΠΎΠ±Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ, с Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ Π²Π»Π΅Π²ΠΎ (ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΡˆΠΈΡ€ΠΈΠ½Π° поля ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ).

Ѐункция sprintf() часто примСняСтся для округлСния чисСл - Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄ΠΎ Ρ‚Ρ€Π΅Ρ… Π·Π½Π°ΠΊΠΎΠ² Π² Π΄Ρ€ΠΎΠ±Π½ΠΎΠΉ части:


$rounded = sprintf("%.3f", 7/3); # Π² $rounded Π±ΡƒΠ΄Π΅Ρ‚ 2.333


ПолноС описаниС Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² с самыми Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΈΡ… употрСблСния ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π² ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ:


perldoc -f sprintf


Π’ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ sprintf() имССтся функция printf(), которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅ самый Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ прСобразования, Π½ΠΎ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΎΡ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊ.

Иногда трСбуСтся Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π΅ со строками ΠΈ словами тСкста, Π° с Π΅Π³ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ символами. Π’ Perl Π΅ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ срСдства Ρ€Π°Π±ΠΎΡ‚Ρ‹ с символами, хотя Π² Π½Π΅ΠΌ Π½Π΅Ρ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… ΠΎΠ΄ΠΈΠ½ символ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Ρ‚ΠΈΠΏΡƒ char Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… языках. Один символ ΠΈΠ· строки ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ substr($string, $index, 1).

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ заимствованных ΠΈΠ· языка Pascal Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ord() ΠΈ chr() Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ прСобразования символа (Π° Ρ‚ΠΎΡ‡Π½Π΅Π΅ односимвольной строки) Π² Π΅Π³ΠΎ ASCII-ΠΊΠΎΠ΄ ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚:


$code = ord($char); # ord('M') Π²Π΅Ρ€Π½Π΅Ρ‚ число 77 $char = chr($code); # chr(77) Π²Π΅Ρ€Π½Π΅Ρ‚ строку 'M' # синоним: $char = sprintf("%c", $code);


Π Π°Π·Π±ΠΈΡ‚ΡŒ строку Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ символы ΠΈ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΈΡ… Π² массив ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ split() с пустой строкой Π² качСствС раздСлитСля:


@array_of_char = split('', $string);


Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ списков ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ substr() ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ Π² строкС мСстами символы с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌΠΈ индСксами, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 1 ΠΈ 11:


$s = 'ΠΊΠžΡ‚ Π²ΠΈΠ΄Π΅Π» ΠΊΠ˜Ρ‚Π°'; (substr($s, 1, 1), substr($s, 11, 1)) = (substr($s, 11, 1), substr($s, 1, 1)); # Π² $s Π±ΡƒΠ΄Π΅Ρ‚ 'ΠΊΠ˜Ρ‚ Π²ΠΈΠ΄Π΅Π» ΠΊΠžΡ‚Π°'


Π˜Π·Π²Π΅ΡΡ‚Π½Π°Ρ ΠΏΠΎ Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΎ списках функция reverse() Π² скалярном контСкстС Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ тСкстового выраТСния, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ символы пСрСставлСны Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:


$palindrom = 'А Π ΠžΠ—Π Π£ΠŸΠΠ›Π НА Π›ΠΠŸΠ£ ΠΠ—ΠžΠ Π'; $backwards = reverse($palindrom); # Π² $backwards Π±ΡƒΠ΄Π΅Ρ‚ 'ΠΠ ΠžΠ—Π Π£ΠŸΠΠ› АН ΠΠ›ΠΠŸΠ£ ΠΠ—ΠžΠ  А'