Введение в Perl
Введение в Perl читать книгу онлайн
В книге приводятся начальные сведения по новому языку программирования Перл.
Данный язык получил широкое распространение в связи с развитием компьютерной сети Интернет. Все примеры в книге проверены для Перл версии 5.003 операционной системы Unix FreeBSD 2.1.0.
Для программистов, системных администраторов и пользователей компьютеров.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
eof файл
eof()
eof
Возвращает 1 если выполняется чтение после конца или чтение из не открытого файла. Аргументом должно быть выражение возвращающее существующий указатель файла. Данную функцию нельзя использовать для чтения файлов открытых как терминалы.
Если аргумент не указан то используется последний читаемый файл.
Использование в форме eof() целесообразно применять в циклах while(<>) для определения конца только последнего файла из
списка. Применяйте eof(ARGV) или eof для определения конца каждого файла из списка.
eval выражение
eval блок
Выражение сканируется и выполняется как обычная Перл программа.
Это делается в контексте текущей программы поэтому можно использовать уже определенные переменные и подпрограммы.
Ворзвращается результат последнего оператора в блоке или значение оператора return. Если обнаружится синтаксическая ошибка или выполнится оператор die возвращается не определенное значение а переменная [email protected] содержит сообщение об ошибке. Если ошибки не было то [email protected] содержит нулевую строку. При отсутсвии аргумента берется значение переменной $_.
Выполняется системная команда из списка и выполнение программы завершается. Если вам необходимо вернуться то лучше применяйте функцию system(). Если в списке количество аргументов больше 1 или список это массив с количеством элементов больше 1 то выполняется системный вызов execvp() с аргументами из списка.
Если один скалярный аргумент то он сканируется на обработку метасимволов и если они присутсвуют то полученные аргуметы передаются интерпретатору /bin/sh -c для дальнейшей обработки.
Если метасимволов нет то аргумент расщепляется на слова и передается системному вызову execvp() что более эффективно.
Внимание! exec() и system(0) не сбрасывают буфер ввода/вывода поэтому необходимо установить переменную $| для предотвращения потери выходной информации.
Возвращает true если существует указанный ключ хеша даже если не определено его значение.
Выполнение программы завершается с кодом выражения.
Возвращает e (основание натурального логарифма) в степени выражения.
Выполняет системный вызов fcntl(). Для использования обязательно выполнить use Fcntl;
Возвращает описатель файла для данного указателя файла.
Системный вызов flock()
Системный вызов fork(). Возвращает pid потомка для родителя и 0 для потомка в случае успеха иначе – неопределенное значение.
Декларативная функция Перл. Определяет формат вывода для оператора write. Подробно смотрите главу Форматы.
Внутренняя функция используемая в format. Форматирует вывод параметров из списка. Результат помещается в переменную $^A.Функция write просто выводит значение этой переменной, но ее так же можно читать а затем обнулять. Обычно format выполняе один вызов formline для одной строки формы, но formline не разделяет строки формата. Это значит что символы '~' и '~~' рассматривают весь формат как одну строку поэтому необходимо использовать многострочные формыд для описания одной записи формата.
getc файл
getc
Читает и возвращает символ из указанного файла.
Если файл не указан то читается STDIN. После конца файла возвращает пустую строку.
Возвращает текущий login из файла /etc/utmp
Не применяйте для идентификации пользователя он не так сильно «закрыт» как getpwuid().
Возвращает упакованный адрес удаленного сокита.
Возвращает группу процесса с указанным PID. Если аргумент отсутсвует возвращает группу текущего процесса.
Возвращает PID родительского процесса.
Возвращает текущий приоритет процесса, группы процессов или пользователя.
Группа системных вызовов
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' и т.д.