Введение в Perl - Маслов Владимир Викторович. Страница 14

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) записываются в стандартном для каждой машины формате и могут быть разными

для разных типов машин. Заметьте, что Перл всегда использует двойную точность (double) поэтому упаковка и распаковка по

типу 'f' приведет к потере точности.

Шаблоны для распаковки и упаковки совершенно одинаковы.

Примеры:

print(pack(«ccc»,65,66,67)); # Результат ABC

print(pack(«A4A3»,"ab","cdefg")); # «ab cde»

print(pack(«a4a3»,"ab","cdefg")); # «ab\0\0cde»

pipe READHANDLE, WRITEHANDLE

Аналогичен системному pipe().

pop массив

Удаляет и возвращает последний элемент массива.

Длина массива уменьшается на 1. Результат не определен если массив пустой. Если имя массива отсутсвует то извлекает из @ARGV для головной программы и @_ для подпрограммы.

pos скаляр

Возвращает смещение от последнего m//g поиска.

print файл список

print список

print

Выводит строку или список строк в файл. Возвращает true при успехе. Аргумент файл может быть скалярной переменной содержащей имя указателя файла если он отсутсвует то осуществляется вывод в стандартный выходной поток STDOUT (если не было вызова select()).

Если список отсутсвует то выводится значение переменной $_.

Для вывода по умолчанию в другой файл необходимо использовать функцию select().

Так как print работает в списковом контексте, то все элементы списка так же вычисляются в списковом контексте т.е. функции будут возвращать списковые значения. Аргументы можно заключать в круглые скобки.

Если указатель файла – элемент массива то элемент нужно заключить в фигурные скобки для вычисления блока.

printf файл список

printf список

Аналогичен вызову "print файл sprintf(список)".

Первый элемент списка должен быть форматом printf() как и в С.

push массив, список

Добавить элементы массива значениями из списка.

Длина массива увеличивается на количество элементов списка.

q/строка/

qq/строка/

qx/строка/

qw/строка/

Обычные операторы строк. Смотри главу Операторы.

quotemeta выражение

Вычисляет выражение в котором метасимволы рассматриваются как обычные символы.

rand выражение

rand

Возвращает случайное число в диаппазоне между 0 и выражением.

Если выражение отсутсвует – между 0 и 1. Данная псевдослучайная последовательность сбрасывается функцией srand().

read файл, скаляр, длина, смещение

read файл, скаляр, длина

Прочитать указанное число байт из файла в скалярную переменную. Возвращает количество прочитаных байт или неопределенность при ошибке. Длина скаляра станет равной количеству считанных байт. Смещение указывают если данные нужно поместить не с самого начала строки.

readdir директория

Возвращает имя следующего файла в директории открытой командой opendir(). В скалярном контексте возвращает все оставшиеся имена файлов. Если файлов больше нет то возвращает неопределенность в скалярном контексте и пустую строку в списковом.

readlink выражение

Возвращает значение символической ссылки. При ошибке возвращает неопределенное значение.

recv SOCKIT, SCALAR, LEN, FLAGS

Получить сообщение из сокита. Аналогичен системному recvfrom().

redo метка

redo

Перейти к началу блока минуя вычисление условия и блока continue. Если метка отсутсвует то переход к ближайшему внешнему блоку.

ref выражение

Возвращает true если выражение это ссылка иначе – false.

Возвращаемое значение зависит от типа ссылки. Существуют следующие типы ссылок:

REF, SCALAR, ARRAY, HASH, CODE, GLOB

Если аргумент – ссылка на класс то возвращается имя класса.

Функция ref() аналогична функции typeof().

rename старое_имя, новое_имя_файла

Переименовать файл. Возвращает 1 в случае успеха иначе 0.

require выражение

require

Если выражение – число, требует что бы текущая версия Перл была не ниже указанной. Если строка – считывает библиотечный файл с указанным именем если он еще не прочитан.

Последний оператор библиотечного файла должен возвращать true.

Обычно это строка вида 1;

Если расширение имени файла отсутсвует то по умолчанию принимается «.pm»

В данной функции можно указывать путь расположения файла, а если библиотека расположена в стандартной системной области Перл то вместо require предпочтительней использовать use().

reset выражение

reset

Обычно используется в блоках continue циклов для очистки переменных и поиска для повторного применения.

Выражение воспринимается как список символов. Для указания диаппазона можно применять символ минус '-'.

Все переменные и массива начинающиеся с этих символов обнуляются. Если выражение отсутсвует то обнуляестя поиск

?шаблон? для повторного поиска. Сбрасываются только переменные текущего модуля.

Пример:

reset 'a'; # очистить все переменные начинающиеся

# буквой 'a'

reset 'a-z' # все переменные с малых букв.

Выражение вида: 'A-Z' употреблять не рекомендуестя т.к.

обнуляются важные массивы @ARGV и @ENV.

return список

Выход из подпрограммы с указанным кодом. Если данная функция отсутсвует то выход из подпрограммы осуществляется с

кодом последнего выполненного оператора.

reverse список

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