Текстовая информация хранится в
Уже известные
'строка в апострофах' или q(строка в апострофах) "строка в кавычках" или qq(строка в кавычках)
Подобно литеральному списку слов qw(), упомянутому в лекции 5,
В qx(). Особенность таких строк заключается в том, что их содержимое рассматривается как синхронный вызов внешней программы или qx(). При этом в ней производится dir можно получить
$music_files = `dir *.mp3`; # или qx(dir \*.mp3)
Таким же образом можно легко воспользоваться услугами любой другой программы. Недаром
Встречается еще один тип
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-строки иногда также применяются для записи
Кроме
| Преобразование | ||
|---|---|---|
| \u | преобразовать следующий символ к верхнему регистру | |
| \l | преобразовать следующий символ к нижнему регистру | |
| \U | преобразовать символы до \E к верхнему регистру | |
| \L | преобразовать символы до \E к нижнему регистру | |
| \Q | отменить специальное значение символов вплоть до \E | |
| \E | End | завершить действие \U или \L или \Q |
Применение этих преобразующих
use locale; # для правильной обработки кириллицы $name = 'мария'; # будем преобразовывать значение переменной print "\u$name"; # будет выведено: Мария print "\U$name\E"; # будет выведено: МАРИЯ print "\Q$name\E"; # будет выведено: \м\а\р\и\я
Аналогичного результата можно достигнуть при использовании некоторых
Еще одним видом непосредственной записи в программе текстовой информации являются так называемые встроенные документы (here-
$here_document = <<END_OF_DOC; Здесь располагается текст встроенного документа, ограничитель которого записывается с начала на отдельной строке. END_OF_DOC
Если желательно записывать ограничитель с пробелами, то его нужно заключить в кавычки, а если он записан кириллицей, то нужно прагмой use включить учет национальных установок:
use locale; $here_document = <<'КОНЕЦ ДОКУМЕНТА'; ЭТО НЕ КОНЕЦ ДОКУМЕНТА КОНЕЦ ДОКУМЕНТА
Во встроенных документах производится
$here_document = <<"END_OF_DOCUMENT"; # присваивание строке Уважаемый $guests[$n]! Приглашаем Вас на презентацию книги "$title", которая состоится $date в $time. Оргкомитет. END_OF_DOCUMENT print $here_document, '-' x 65, "\n";
Например, с помощью here-документа легко и удобно программно создать HTML-страницу, вставляя в нее нужную информацию:
$web_page = <<HTML; # поместить here-документ в переменную
<!DOCTYPE html
PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type"
content="text/html; charset=$encoding"/>
<meta name="author" content="$author"/>
<title>$title</title>
</head>
<body>
<h3 style="text-align: center;">$header</h3>
<div align="justify">$article{$number}</div>
<p><a href="$hyperlink">Вернуться к разделу $topic</a><p>
<hr/><small>Copyright © $year, $author.</small>
</body>
</html>
HTML
Это один из способов
В предыдущих лекциях уже упоминались функции, обрабатывающие символьную информацию:
chomp(), удаляющая в конце chop(), отсекающая любой последний символ строки;join (), объединяющая элементы массива в одну строку;split (), разделяющая строку на В этой лекции мы познакомимся с другими встроенными функциями для работы с текстом. Хотя в приведенных далее примерах
Часто требуется выяснить, содержит ли строка ту или иную index() выполняет поиск rindex() ищет
$pos = index($string, $sub_string, $offset); # с начала $last_pos = rindex($string, $sub_string, $offset); # с конца print "есть правда!" if(index($life, 'правда') != -1);
В следующей главе будет рассказано о
Определение длины текста - также весьма распространенная операция. Функция возвращает длину в символах значения строки или выражения, возвращающего строку или преобразованного к строке:
$string_length = length($string); # строка в переменной $n *= 2 until(length($n)>10); # длина числа print 'Текст слишком длинный' if length($s1 . $s2) > $limit;
Функция , выполняющая
$sub = substr($string, # копировать в $sub из $string, $offset, # отступив $offset символов, $length); # подстроку длиной $length $e = substr($s, rindex($s,'.')); # от последней '.' до конца $last_char = substr($string, -1, 1); # последний символ
Необычность функции в , стоящей слева от знака
$string = 'Perl 5 нравится программистам.'; $new_string = '6 тоже по'; substr($string, 5, 2) = $new_string; # в $string будет: 'Perl 6 тоже понравится программистам.'
Подобным же образом можно удалить последние 5 символов строки, заменив их пустой строкой:
substr($string, -5) = ''; # удалить последние 5 символов
Сочетая уже известные функции, можно выполнять разные манипуляции с текстовой информацией. Например, чтобы переставить слова в строке, можно воспользоваться функциями , и в списочном
$reverse_words = join(' ', reverse(split(' ', $text)));
В use . Преобразовать текст к нижнему регистру (
use locale; # учитывать национальные установки $lower_case = lc($text); # преобразовать к маленьким буквам
Функция lcfirst() возвращает значение
$first_char_lower = lcfirst($text); # 'Perl' станет 'perl'
К верхнему регистру ( ) преобразовать текст можно с помощью функции uc(), которая возвращает значение символьного выражения, преобразованное к заглавным буквам.
use locale; $upper_case = uc($text); # преобразовать к большим буквам
Функция ucfirst() возвращает значение
$capitalized = ucfirst($name); # 'ларри' станет 'Ларри'
crypt() выполняет
# незашифрованная строка из $plain шифруется в $crypted $crypted = crypt($plain, $salt);
Эта функция не имеет парной расшифровывающей функции и чаще всего используется для сравнения открытого текста с существующей зашифрованной строкой, как это делается в следующем примере:
if (crypt($plain, $salt) eq $crypted) {
# открытый текст совпал с зашифрованным
}
Функция quotemeta() находит в символьном выражении
$string_with_meta = '\n \032 \x00 text \t \v "'; $quoted = quotemeta($string_with_meta); # в $quoted будет '\\n\ \\032\ \\x00\ text\ \\t\ \\v\ \"'
В возвращает десятичное
$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() возвращает строку, которая сформирована в соответствии с правилами sprintf(ФОРМАТ, . В формате преобразования располагается любой текст, в котором могут присутствовать указания преобразования. Каждое указание начинается с символа
| Преобразование | Результат преобразования | ||
|---|---|---|---|
| %% | Знак |
% | |
| %c | Символ с указанным номером в кодовой таблице | ||
| %s | Строка | ||
| %d | %i | Целое со знаком в десятичном виде | |
| %u | Целое без знака в десятичном виде | ||
| %b | Целое без знака в двоичном виде | ||
| %o | Целое без знака в восьмеричном виде | ||
| %x | %X | Целое без знака в шестнадцатеричном виде | |
| %e | %E | Целое с плавающей точкой в научной |
|
| %f | %F | Число с плавающей точкой в виде десятичной дроби | |
| %g | %G | Число с плавающей точкой в формате %e или %f |
Между знаком
| Параметр | Выполняемое | Пример параметров 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 '
Преобразования в формате этого примера обозначают следующее:
Функция sprintf() часто применяется для округления чисел - например, до трех знаков в дробной части:
$rounded = sprintf("%.3f", 7/3); # в $rounded будет 2.333
Полное описание форматов с самыми разными примерами их употребления можно прочитать в официальной документации:
perldoc -f sprintf
В дополнение к функции sprintf() имеется функция printf(), которая использует тот же самый формат преобразования, но выводит отформатированный результат в указанный выходной поток.
Иногда требуется работать не со строками и словами текста, а с его отдельными символами. В в других языках. Один символ из строки можно скопировать функцией .
С помощью заимствованных из языка ord() и выполняются преобразования символа (а точнее односимвольной строки) в его
$code = ord($char); # ord('M') вернет число 77
$char = chr($code); # chr(77) вернет строку 'M'
# синоним: $char = sprintf("%c", $code);
Разбить строку на отдельные символы и поместить их в с пустой строкой в качестве разделителя:
@array_of_char = split('', $string);
С помощью списков и нескольких вызовов функции можно поменять в строке местами символы с указанными индексами, например, 1 и 11:
$s = 'кОт видел кИта'; (substr($s, 1, 1), substr($s, 11, 1)) = (substr($s, 11, 1), substr($s, 1, 1)); # в $s будет 'кИт видел кОта'
Известная по лекции о списках функция в скалярном
$palindrom = 'А РОЗА УПАЛА НА ЛАПУ АЗОРА'; $backwards = reverse($palindrom); # в $backwards будет 'АРОЗА УПАЛ АН АЛАПУ АЗОР А'
Обрабатывать отдельные байты, в том числе и символы, можно также при помощи функций pack() и unpack(), которые предназначены для преобразования любых данных и будут рассмотрены в лекции, посвященной вводу-выводу.
В современном мире уже не работает формула "один символ - это один байт". Необходимость представления текстов, одновременно содержащих символы разных естественных языков, привела к появлению ряда стандартов, часто объединяемых под общим названием
Для записи в исходной программе символов
use utf8; # включить поддержку UTF-8
$hash{' $$\pi$$ '} = 3.141592653; # пи (код \x{03C0})
print "$hash{' $$\pi$$ '}\n"; # будет выведено: 3.141592653
Можно даже использовать национальные алфавиты для записи идентификаторов переменных. Например, кириллицу или греческий:
use utf8; $скаляр = 25; # имя скаляра на русском $ $$\Sigma$$ = $скаляр + 53; # имя скаляра на греческом print "$скаляр $ $$\Sigma$$ \n"; # будет выведено: 25 78 @массив = ($ $$\Sigma$$, $скаляр); # имя массива на русском print "@массив\n"; # будет выведено: 78 25
Для ввода текста подобной программы понадобится редактор, поддерживающий работу с
Скалярные значения в , index(), , ord(), rindex(), . Это видно на таком примере:
use utf8;
$u = "€500"; # знак евро (escape-код \x{20AC})
print "Длина=", length($u), "\n"; # Длина=4
$u = ' $$\infty\ne\infty$$ '; # коды \x{221E}, \x{2260}, \x{221E}
print "Бесконечности не равны\n" if $u eq reverse 'infin';
Переключить встроенные функции на работу не с символами, а с байтами можно с помощью прагмы use bytes. Снова переключиться на работу функций не с байтами, а с символами можно с помощью прагмы no bytes. Подключив прагмой use Encode стандартный модуль преобразования можно преобразовать обычную строку в строку символов encode(), возвращающей символьную строку в представлении UTF-8. Обратное преобразование выполняет функция decode():
use Encode;
my $cp1251 = 'Привет!'; # строка в кодировке windows-1251
my $utf8 = encode('utf8', $cp1251); # преобразуется в UTF-8
my $win_ru = decode('utf8', $utf8); # и наоборот
Поддержка наборов символов
В этой лекции рассмотрены средства работы с символьной информацией в
Текстовая информация хранится в
Уже известные
'строка в апострофах' или q(строка в апострофах) "строка в кавычках" или qq(строка в кавычках)
Подобно литеральному списку слов qw(), упомянутому в лекции 5,
В qx(). Особенность таких строк заключается в том, что их содержимое рассматривается как синхронный вызов внешней программы или qx(). При этом в ней производится dir можно получить
$music_files = `dir *.mp3`; # или qx(dir \*.mp3)
Таким же образом можно легко воспользоваться услугами любой другой программы. Недаром
Встречается еще один тип
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-строки иногда также применяются для записи
Кроме
| Преобразование | ||
|---|---|---|
| \u | преобразовать следующий символ к верхнему регистру | |
| \l | преобразовать следующий символ к нижнему регистру | |
| \U | преобразовать символы до \E к верхнему регистру | |
| \L | преобразовать символы до \E к нижнему регистру | |
| \Q | отменить специальное значение символов вплоть до \E | |
| \E | End | завершить действие \U или \L или \Q |
Применение этих преобразующих
use locale; # для правильной обработки кириллицы $name = 'мария'; # будем преобразовывать значение переменной print "\u$name"; # будет выведено: Мария print "\U$name\E"; # будет выведено: МАРИЯ print "\Q$name\E"; # будет выведено: \м\а\р\и\я
Аналогичного результата можно достигнуть при использовании некоторых
Еще одним видом непосредственной записи в программе текстовой информации являются так называемые встроенные документы (here-
$here_document = <<END_OF_DOC; Здесь располагается текст встроенного документа, ограничитель которого записывается с начала на отдельной строке. END_OF_DOC
Если желательно записывать ограничитель с пробелами, то его нужно заключить в кавычки, а если он записан кириллицей, то нужно прагмой use включить учет национальных установок:
use locale; $here_document = <<'КОНЕЦ ДОКУМЕНТА'; ЭТО НЕ КОНЕЦ ДОКУМЕНТА КОНЕЦ ДОКУМЕНТА
Во встроенных документах производится
$here_document = <<"END_OF_DOCUMENT"; # присваивание строке Уважаемый $guests[$n]! Приглашаем Вас на презентацию книги "$title", которая состоится $date в $time. Оргкомитет. END_OF_DOCUMENT print $here_document, '-' x 65, "\n";
Например, с помощью here-документа легко и удобно программно создать HTML-страницу, вставляя в нее нужную информацию:
$web_page = <<HTML; # поместить here-документ в переменную
<!DOCTYPE html
PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type"
content="text/html; charset=$encoding"/>
<meta name="author" content="$author"/>
<title>$title</title>
</head>
<body>
<h3 style="text-align: center;">$header</h3>
<div align="justify">$article{$number}</div>
<p><a href="$hyperlink">Вернуться к разделу $topic</a><p>
<hr/><small>Copyright © $year, $author.</small>
</body>
</html>
HTML
Это один из способов
В предыдущих лекциях уже упоминались функции, обрабатывающие символьную информацию:
chomp(), удаляющая в конце chop(), отсекающая любой последний символ строки;join (), объединяющая элементы массива в одну строку;split (), разделяющая строку на В этой лекции мы познакомимся с другими встроенными функциями для работы с текстом. Хотя в приведенных далее примерах
Часто требуется выяснить, содержит ли строка ту или иную index() выполняет поиск rindex() ищет
$pos = index($string, $sub_string, $offset); # с начала $last_pos = rindex($string, $sub_string, $offset); # с конца print "есть правда!" if(index($life, 'правда') != -1);
В следующей главе будет рассказано о
Определение длины текста - также весьма распространенная операция. Функция возвращает длину в символах значения строки или выражения, возвращающего строку или преобразованного к строке:
$string_length = length($string); # строка в переменной $n *= 2 until(length($n)>10); # длина числа print 'Текст слишком длинный' if length($s1 . $s2) > $limit;
Функция , выполняющая
$sub = substr($string, # копировать в $sub из $string, $offset, # отступив $offset символов, $length); # подстроку длиной $length $e = substr($s, rindex($s,'.')); # от последней '.' до конца $last_char = substr($string, -1, 1); # последний символ
Необычность функции в , стоящей слева от знака
$string = 'Perl 5 нравится программистам.'; $new_string = '6 тоже по'; substr($string, 5, 2) = $new_string; # в $string будет: 'Perl 6 тоже понравится программистам.'
Подобным же образом можно удалить последние 5 символов строки, заменив их пустой строкой:
substr($string, -5) = ''; # удалить последние 5 символов
Сочетая уже известные функции, можно выполнять разные манипуляции с текстовой информацией. Например, чтобы переставить слова в строке, можно воспользоваться функциями , и в списочном
$reverse_words = join(' ', reverse(split(' ', $text)));
В use . Преобразовать текст к нижнему регистру (
use locale; # учитывать национальные установки $lower_case = lc($text); # преобразовать к маленьким буквам
Функция lcfirst() возвращает значение
$first_char_lower = lcfirst($text); # 'Perl' станет 'perl'
К верхнему регистру ( ) преобразовать текст можно с помощью функции uc(), которая возвращает значение символьного выражения, преобразованное к заглавным буквам.
use locale; $upper_case = uc($text); # преобразовать к большим буквам
Функция ucfirst() возвращает значение
$capitalized = ucfirst($name); # 'ларри' станет 'Ларри'
crypt() выполняет
# незашифрованная строка из $plain шифруется в $crypted $crypted = crypt($plain, $salt);
Эта функция не имеет парной расшифровывающей функции и чаще всего используется для сравнения открытого текста с существующей зашифрованной строкой, как это делается в следующем примере:
if (crypt($plain, $salt) eq $crypted) {
# открытый текст совпал с зашифрованным
}
Функция quotemeta() находит в символьном выражении
$string_with_meta = '\n \032 \x00 text \t \v "'; $quoted = quotemeta($string_with_meta); # в $quoted будет '\\n\ \\032\ \\x00\ text\ \\t\ \\v\ \"'
В возвращает десятичное
$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() возвращает строку, которая сформирована в соответствии с правилами sprintf(ФОРМАТ, . В формате преобразования располагается любой текст, в котором могут присутствовать указания преобразования. Каждое указание начинается с символа
| Преобразование | Результат преобразования | ||
|---|---|---|---|
| %% | Знак |
% | |
| %c | Символ с указанным номером в кодовой таблице | ||
| %s | Строка | ||
| %d | %i | Целое со знаком в десятичном виде | |
| %u | Целое без знака в десятичном виде | ||
| %b | Целое без знака в двоичном виде | ||
| %o | Целое без знака в восьмеричном виде | ||
| %x | %X | Целое без знака в шестнадцатеричном виде | |
| %e | %E | Целое с плавающей точкой в научной |
|
| %f | %F | Число с плавающей точкой в виде десятичной дроби | |
| %g | %G | Число с плавающей точкой в формате %e или %f |
Между знаком
| Параметр | Выполняемое | Пример параметров 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 '
Преобразования в формате этого примера обозначают следующее:
Функция sprintf() часто применяется для округления чисел - например, до трех знаков в дробной части:
$rounded = sprintf("%.3f", 7/3); # в $rounded будет 2.333
Полное описание форматов с самыми разными примерами их употребления можно прочитать в официальной документации:
perldoc -f sprintf
В дополнение к функции sprintf() имеется функция printf(), которая использует тот же самый формат преобразования, но выводит отформатированный результат в указанный выходной поток.
Иногда требуется работать не со строками и словами текста, а с его отдельными символами. В в других языках. Один символ из строки можно скопировать функцией .
С помощью заимствованных из языка ord() и выполняются преобразования символа (а точнее односимвольной строки) в его
$code = ord($char); # ord('M') вернет число 77
$char = chr($code); # chr(77) вернет строку 'M'
# синоним: $char = sprintf("%c", $code);
Разбить строку на отдельные символы и поместить их в с пустой строкой в качестве разделителя:
@array_of_char = split('', $string);
С помощью списков и нескольких вызовов функции можно поменять в строке местами символы с указанными индексами, например, 1 и 11:
$s = 'кОт видел кИта'; (substr($s, 1, 1), substr($s, 11, 1)) = (substr($s, 11, 1), substr($s, 1, 1)); # в $s будет 'кИт видел кОта'
Известная по лекции о списках функция в скалярном
$palindrom = 'А РОЗА УПАЛА НА ЛАПУ АЗОРА'; $backwards = reverse($palindrom); # в $backwards будет 'АРОЗА УПАЛ АН АЛАПУ АЗОР А'
Обрабатывать отдельные байты, в том числе и символы, можно также при помощи функций pack() и unpack(), которые предназначены для преобразования любых данных и будут рассмотрены в лекции, посвященной вводу-выводу.
В современном мире уже не работает формула "один символ - это один байт". Необходимость представления текстов, одновременно содержащих символы разных естественных языков, привела к появлению ряда стандартов, часто объединяемых под общим названием
Для записи в исходной программе символов
use utf8; # включить поддержку UTF-8
$hash{' $$\pi$$ '} = 3.141592653; # пи (код \x{03C0})
print "$hash{' $$\pi$$ '}\n"; # будет выведено: 3.141592653
Можно даже использовать национальные алфавиты для записи идентификаторов переменных. Например, кириллицу или греческий:
use utf8; $скаляр = 25; # имя скаляра на русском $ $$\Sigma$$ = $скаляр + 53; # имя скаляра на греческом print "$скаляр $ $$\Sigma$$ \n"; # будет выведено: 25 78 @массив = ($ $$\Sigma$$, $скаляр); # имя массива на русском print "@массив\n"; # будет выведено: 78 25
Для ввода текста подобной программы понадобится редактор, поддерживающий работу с
Скалярные значения в , index(), , ord(), rindex(), . Это видно на таком примере:
use utf8;
$u = "€500"; # знак евро (escape-код \x{20AC})
print "Длина=", length($u), "\n"; # Длина=4
$u = ' $$\infty\ne\infty$$ '; # коды \x{221E}, \x{2260}, \x{221E}
print "Бесконечности не равны\n" if $u eq reverse 'infin';
Переключить встроенные функции на работу не с символами, а с байтами можно с помощью прагмы use bytes. Снова переключиться на работу функций не с байтами, а с символами можно с помощью прагмы no bytes. Подключив прагмой use Encode стандартный модуль преобразования можно преобразовать обычную строку в строку символов encode(), возвращающей символьную строку в представлении UTF-8. Обратное преобразование выполняет функция decode():
use Encode;
my $cp1251 = 'Привет!'; # строка в кодировке windows-1251
my $utf8 = encode('utf8', $cp1251); # преобразуется в UTF-8
my $win_ru = decode('utf8', $utf8); # и наоборот
Поддержка наборов символов
В этой лекции рассмотрены средства работы с символьной информацией в
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.