Создание серверных приложений на языке PERL

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




Урок 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]  [приложение Б]  [приложение В]  [заключение]  [благодарности] 

    Copyright (c) ClericICN, 2002


    Содержание раздела