Читать интересную книгу Введение в Perl - Владимир Маслов

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 6 7 8 9 10 11 12 13 14 ... 16

Значение выражения воспринимается как имя файла Перл скрипта.

Изначально это применялось для включения подпрограмм библиотеки.

Сейчас правильней использовать вызовы use() и require() которые обеспечивают контроль ошибок и завершения.

dump метка

Выполнние «дампа» текущей памяти. Применялось для возможности исрользовать программу undump что бы включить текущий исполняемый код в программу после инициализации всех переменных.

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

Внимание! Файлы открытые до момента дампа не будут открытыми

в момент исполнения новой программой.

each хеш

Возвращает 2-элементный массив. Первый элемент – ключ второй – значение следующего элемента хеша. Позволяет «просматривать» все значения хеша в определенном порядке. Сброс переменной цикла происходит только после прохождения всего массива.

eof()

eof файл

eof()

eof

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

Если аргумент не указан то используется последний читаемый файл.

Использование в форме eof() целесообразно применять в циклах while(<>) для определения конца только последнего файла из

списка. Применяйте eof(ARGV) или eof для определения конца каждого файла из списка.

eval выражение

eval выражение

eval блок

Выражение сканируется и выполняется как обычная Перл программа.

Это делается в контексте текущей программы поэтому можно использовать уже определенные переменные и подпрограммы.

Ворзвращается результат последнего оператора в блоке или значение оператора return. Если обнаружится синтаксическая ошибка или выполнится оператор die возвращается не определенное значение а переменная [email protected] содержит сообщение об ошибке. Если ошибки не было то [email protected] содержит нулевую строку. При отсутсвии аргумента берется значение переменной $_.

exec список

Выполняется системная команда из списка и выполнение программы завершается. Если вам необходимо вернуться то лучше применяйте функцию system(). Если в списке количество аргументов больше 1 или список это массив с количеством элементов больше 1 то выполняется системный вызов execvp() с аргументами из списка.

Если один скалярный аргумент то он сканируется на обработку метасимволов и если они присутсвуют то полученные аргуметы передаются интерпретатору /bin/sh -c для дальнейшей обработки.

Если метасимволов нет то аргумент расщепляется на слова и передается системному вызову execvp() что более эффективно.

Внимание! exec() и system(0) не сбрасывают буфер ввода/вывода поэтому необходимо установить переменную $| для предотвращения потери выходной информации.

exists выражение

Возвращает true если существует указанный ключ хеша даже если не определено его значение.

exit выражение

Выполнение программы завершается с кодом выражения.

exp выражение

Возвращает e (основание натурального логарифма) в степени выражения.

fcntl файл, функция, скаляр

Выполняет системный вызов fcntl(). Для использования обязательно выполнить use Fcntl;

fileno файл

Возвращает описатель файла для данного указателя файла.

flock файл, операция

Системный вызов flock()

fork

Системный вызов fork(). Возвращает pid потомка для родителя и 0 для потомка в случае успеха иначе – неопределенное значение.

format

Декларативная функция Перл. Определяет формат вывода для оператора write. Подробно смотрите главу Форматы.

formline формат, список

Внутренняя функция используемая в format. Форматирует вывод параметров из списка. Результат помещается в переменную $^A.Функция write просто выводит значение этой переменной, но ее так же можно читать а затем обнулять. Обычно format выполняе один вызов formline для одной строки формы, но formline не разделяет строки формата. Это значит что символы '~' и '~~' рассматривают весь формат как одну строку поэтому необходимо использовать многострочные формыд для описания одной записи формата.

getc файл

getc файл

getc

Читает и возвращает символ из указанного файла.

Если файл не указан то читается STDIN. После конца файла возвращает пустую строку.

getlogin

Возвращает текущий login из файла /etc/utmp

Не применяйте для идентификации пользователя он не так сильно «закрыт» как getpwuid().

getpeername сокит

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

getpgrp PID

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

getppid

Возвращает PID родительского процесса.

getpriority WHICH, WHO

Возвращает текущий приоритет процесса, группы процессов или пользователя.

Группа системных вызовов

getpwnam NAME

getgrnam NAME

gethostbyname NAME

getnamebyname NAME

getprotobyname NAME

getpwuid UID

getgrid GID

getservbyname NAME, PROTO

gethostbyaddr ADDR, ADDRTYPE

getnetbyaddr ADDR, ADDRTYPE

getprotobynumber NUMBER

getservbyport PORT, PROTO

getpwent

gethostent

getnetent

getprotoent

getservent

setpwent

setgrent

sethostent STAYOPEN

setnetent STAYOPEN

setprotoent STAYOPEN

setservent STAYOPEN

endpwent

endgrent

endhostent

endnetent

endprotoent

endservent

Все эти функции анологичны одноименным системным вызовам.

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

($name, $passwd, $uid, $gid, $quota, $comment, $gcos, $dir, $shell) = getpw*

($name, $passwd, $gid, $members) = getgr*

($name, $aliases, $addrtype, $length, @addrs) = gethost*

($name, $aliases, $addrtype, $net) = getnet*

($name, $aliases, $proto) = getproto*

($name, $aliases, $port, $proto) = getserv*

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

Элемент $members в вызове getgr содержит разделенные пробелом имена членов группы.

@addrs содержит IP адреса компьютеров в сети Интернет в упакованном виде.

Для распаковки применяйте: ($a, $b, $c, $d) = unpack('C4',$addr[0]);

getsockname сокит

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

getsockopt сокит, уровень, опция

Возвращает опцию сокита.

glob выражение

Возвращает список файлов удовлетворяющих выражению с '*' как в команде ls.

gmtime выражение

Переводит местное время полученное функцией time() во время по Гринвичу.

Обычно используется в виде:

($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=gmtime(time);

goto метка

goto выражение

goto &подпрограмма

Бузусловный переход на метку. Нельзя делать переход на метку в структуру которая должна быть инициирована например подпрограмму или цикл foreach и т.д.

Вторая форма применяется для динамического определения перехода.

Например:

goto ('метка1', 'метка2', 'метка3')[$i];

Здесь при $i = 0 будет переход на 'метка1', $i = 1 на 'метка2' и т.д.

Третья форма (goto &подпрограмма) довольно «хитрый» метод подмены имени вызываемой подпрограммы именем текущей. Это используется в методе автозагрузки когда нужно запустить другую процедуру но под именем текущей как-будто та была вызвана раньше.

grep блок, список

grep выражение, список

Выполнят блок или выражение для каждого элемента списка. Переменная $_ содержит текущий элемент.

Возвращает список элементов с которыми выражение дало результат true.

В скалярном контексте возвращает количество результатов true.

hex выражение

Воспринимает выражение как строку шестнадцатиричных цифр и возвращает десятичное значение.

import

В Перл нет встроенной функции import, но есть метод с помощью которого модули могут экспортировать область имен

другим модулям. Подробно смотрите функцию use().

index строка, подстрока, позиция

index строка, подстрока

Возвращает позицию первого вхождения подстроки в строке начиная с указанной позиции. Если позиция отсутсвует то сравнение начинается с начала строки. Отсчет позиции ведется с 0 если только не изменено значение встроеной переменной $[. Если подстрока не найдена то результат меньше первой позиции на 1. Обычно это -1.

int выражение

1 ... 6 7 8 9 10 11 12 13 14 ... 16
На этом сайте Вы можете читать книги онлайн бесплатно русская версия Введение в Perl - Владимир Маслов.

Оставить комментарий