Введение в Perl - Маслов Владимир Викторович
Шрифт:
Интервал:
Закладка:
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 cde»
pipe READHANDLE, WRITEHANDLE
Аналогичен системному pipe().
pop массив
Удаляет и возвращает последний элемент массива.
Длина массива уменьшается на 1. Результат не определен если массив пустой. Если имя массива отсутсвует то извлекает из @ARGV для головной программы и @_ для подпрограммы.
pos скаляр
Возвращает смещение от последнего m//g поиска.
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 список
В списковом контексте возвращает список с элементами в обратном порядке указанному списку. В скалярном контексте возвращает строку спереставленными символами первого элемента списка.