open файл, выражение open файл К таблице
Открыть файл с указанным именем. Аргумент "файл" - это фактически указатель на блок описания файла. Если имя (выражение) файла отсутствует, то имя считается таким же как и указатель файла. Если перед именем стоит символ "<" то файл открывается только на чтение (значение по умолчанию). Если ">" - на запись. Если ">>" - на добавление записей. "+>" или "+<" - файл открыт на чтение и запись одновременно. Если имя файла начинается с символа "|", то имя считается системной командой, на вход которой выводятся данные (поток). Имя "-" - стандартный вход (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) записываются в стандартном для каждой машины формате и могут быть разными для разных типов машин. Заметьте, что 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" 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
8 8 8
| |