Функция ord возвращает числа от
foreach $val (@ascii) {
$val++, # Увеличивает каждый ASCII-код на 1
}
$ibm = pack( С*). @ascii), print $ibm\n # Выводит IBM
О Смотри также--------------------------------------------------------------------------------------------
Описание функций chr, ord, printf, sprintf, pack и unpack ърег1/ипс(\).
1.5. Посимвольная обработка строк
Проблема
Требуется последовательно обрабатывать строку по одному символу.
Решение
Воспользуйтесь функцией split с пустым шаблоном, чтобы разбить строку на отдельные символы, или функцией unpack, если вам нужны лишь их ASCII-коды:
@>array = split(//, $string);
@array = unpack("O", Sstring);
Или последовательно выделяйте очередной символ в цикле:
while (/(.)/g) { # . здесь не интерпретируется как новая строка
# Сделать что-то полезное с $1 }
Комментарий
Как говорилось выше, фундаментальной единицей текста в Perl является строка, а не символ. Необходимость посимвольной обработки строк возникает достаточно редко. Обычно такие задачи легче решаются с помощью высокоуровневых операций Perl (например, поиска по шаблону). Пример приведен в рецепте 7.7, где для поиска аргументов командной строки используются подстановки.
Если вызвать split с шаблоном, который совпадает с пустой строкой, функция возвращает список отдельных символов строки. При намеренном использовании эта особенность оказывается удобной, однако с ней можно столкнуться и случайно. Например, /X*/ совпадает с пустой строкой. Не исключено, что вам встретятся и другие ненамеренные совпадения.
Ниже приведен пример, который выводит символы строки "an apple a day", отсортированные в восходящем порядке ASCII-кодов:
%seen =();
$string = "an apple a day";
foreach $byte (split //, Sstring) {
$seen($1)++; }
print "unique chars are: ", sort(keys %seen), "\n"; unique chars are: adelnpy
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий