Введение в Perl
Шрифт:
Если имя файла начинается с символа '|' то имя считается системной командой на вход которой выводятся данные (поток).
Имя '-' – стандартный вход (STDIN), '>-' – стандартный вывод (STDOUT).
Функция возвращает true при успехе и false – неудаче.
Если имя (выражение) начинается с символов «>&» то остаток имени считается именем указателя файла который окрывается повторно.
Символ '&' может стоять после '<', '>>', '+>', '+>>' и '+<'. Режим повторного открытия
Выражение вида «<&=N» где N -число, эквивалентно системному вызову fdopen.
Если имя «|-» или «-|» то происходит «расщепление» (fork) процесса на потомка и родителя. При этом возвращается номер процесса потомка (PID) внутри родительского процесса и 0 – внутри потомка. При этом запись/чтение в файл родительским процессом воспринимается как чтение/запись потомком. Для потомка это стандартный ввод/вывод.
Родительский процесс ждет завершения потомка после закрытия потока и получает код завершения в переменной $?.
Имя файла не должно содержать пробелов как в начале так и в конце.
opendir указатель, выражение
Открыть директорию с именем выражения для обработки функциями readdir, telldir, seekdir, rewinddir и closedir.
Возвращает true при успехе.
ord выражение
Возвращает ascii код первого символа выражения.
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) записываются в стандартном для каждой машины формате и могут быть разными
для разных типов машин. Заметьте, что Перл всегда использует двойную точность (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 список
Выводит строку или список строк в файл. Возвращает true при успехе. Аргумент файл может быть скалярной переменной содержащей имя указателя файла если он отсутсвует то осуществляется вывод в стандартный выходной поток STDOUT (если не было вызова select).
Если список отсутсвует то выводится значение переменной $_.
Для вывода по умолчанию в другой файл необходимо использовать функцию select.
Так как print работает в списковом контексте, то все элементы списка так же вычисляются в списковом контексте т.е. функции будут возвращать списковые значения. Аргументы можно заключать в круглые скобки.
Если указатель файла – элемент массива то элемент нужно заключить в фигурные скобки для вычисления блока.
printf файл список
printf список