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