Вернуться на сайт гостевой книги Power Perl Educaton Help Download Links Off-line version

Урок 19. Функции для работы со строками

Функция Chomp

chomp переменная;
chomp список;
chomp;

Удаляет в конце строки символ указанный переменной $/. Обычно это '\n'. Возвращает количество удаленных символов. Если переменная не указана то используется переменная $_. Если указан список то обрабатывается каждая строка списка и возвращается общее количество удаленных символов.

Функция Chop

chop переменная;
chop список;
chop;

Полностью аналогично функции chomp но всегда удаляет последний символ строки.

Функция Chr

Возвращает символ с заданным ASCII кодом.

Функция Lc

Преобразовать строку в буквы нижнего регистра.

Функция Lcfirst

Заменить первую букву строки на малую.

Функция Length

Возвращает длину строки выражения.

Функция Ord

Возвращает ascii код первого символа выражения.

Функция Uc

Возвращает строку выражения, в которой малые буквы заменены на заглавные.

Функция Ucfirst

Возвращает строку выражения, в которой первая буква заменена на заглавную.

Функция Substr

substr (выражение, смещение, длина);
substr (выражение, смещение);

Возвращает подстроку выражения, начиная со смещения и заданной длины. Если смещение отрицательное, то отсчет ведется от конца строки. Если длина не указана, то берется все до конца строки.

Функция Pack

pack (шаблон, список);

Упаковывает список в двоичную структуру по шаблону. Шаблон - это строка символов, описывающая порядок и тип упакованных значений.

  • A - текстовая строка, добавляется пробелами.
  • a - текстовая строка, добавляется 0 символом.
  • b - битовая строка (возрастающая нумерация бит)
  • B - битовая строка (убывающая нумерация бит)
  • h - шестнадцатеричная строка ( младший байт - первый)
  • H - шестнадцатеричная строка (старший байт первый)
  • c - символ со знаком
  • C - символ без знака.
  • s - короткое целое (один байт) со знаком.
  • S - короткое целое без знака.
  • i - целое (два байта) со знаком.
  • I - целое без знака.
  • l - длинное целое (4 байта) со знаком.
  • L - длинное целое без знака.
  • n - короткое в "сетевом" формате.
  • N - длинное в "сетевом" формате.
  • v - короткое в "VAX" формате.
  • V - длинное в "VAX" формате.
  • f - single float.
  • F - double float.
  • p - указатель на строку ограниченную 0.
  • P - указатель на структуру с фиксированной длиной.
  • u - упаковка uuencode.
  • x - нуль-байт
  • X - резервный байт.
  • @ - заполнить нулями позицию.

За каждой буквой может стоять число означающее количество повторов. Для всех типов за исключением 'a', 'A', 'b', 'B', 'h' и 'H', упаковывается максимально возможное количество значений из списка. Символ '*' после типа означает использовать оставшиеся параметры. Тип 'a' и 'A' использует только одно значение из списка и добавляет остаток поля либо нуль-символами, либо пробелами (при распаковке по типу 'A' пробелы и нули отбрасываются, а по 'a' - нет). Типы 'b' и 'B' упаковывают строку в указанное число бит. Так же как и 'h' и 'H' в число ниблов (байт). 'P' - упаковывает указатель на структуру с указанной длиной. Числа с плавающей запятой (floats и double) записываются в стандартном для каждой машины формате и могут быть разными для разных типов машин. Заметьте, что Perl всегда использует двойную точность (double), поэтому упаковка и распаковка по типу 'f' приведет к потере точности. Шаблоны для распаковки и упаковки совершенно одинаковы.

print(pack("ccc",65,66,67)); 	 # Результат ABC
print(pack("A4A3","ab","cdefg"));	 # "ab cde"
print(pack("a4a3","ab","cdefg")); 	 # "ab\0\0cde"

Функция Unpack

unpack (шаблон, выражение);

Функция, обратная pack(). Распаковывает строку выражения по указанному шаблону в массив значений. В скалярном контексте возвращает значение только первого элемента. Шаблоны такие же как и в pack().

Символ '%' в шаблоне означает, что вы хотите получить вместо значения его контрольную сумму. По умолчанию - 16-битную.

* * * *

Напишите программу, выводящую латинский алфавит. ASCII код первой буквы алфавита - 65. В латинском алфавите 25 букв.

Попробуйте записать в файл IP адрес, затем считать его и сравнить (программно с помощью оператора IF) его с текущем IP адресом. Почему, как вы думаете, они не совпали?
запись IP адреса осуществляйте такой строкой:


print "$ENV{'REMOTE_ADDR'}\n";

[Содержание]  [Вступление]  [необходимое для начала изучения]  [урок 1]  [урок 2]  [урок 3]  [урок 4]  [урок 5]  [урок 6]  [урок 7]  [урок 8]  [урок 9]  [урок 10]  [урок 11]  [урок 12]  [урок 13]  [урок 14]  [урок 15]  [урок 16]  [урок 17]  [урок 18]  [урок 19]  [урок 20]  [урок 21]  [урок 22]  [урок 23]  [урок 24]  [урок 25]  [урок 26]  [урок 27]  [урок 28]  [правила хорошего тона]  [приложение A]  [приложение Б]  [приложение В]  [заключение]  [благодарности] 


107631

92
15

HOLMS.ru Counter -эфхъё ЎшЄшЁютрэш  Counter CO.KZ


Copyright © ClericICN, 2002 - 2003