Введение в Perl

         

Require выражение require



105require выражение
require


Если выражение - число, требует что бы текущая версия Perl была не ниже указанной. Если строка - считывает библиотечный файл с указанным именем, если он еще не прочитан. Последний оператор библиотечного файла должен возвращать true. Обычно это строка вида 1; Если расширение имени файла отсутствует, то по умолчанию принимается ".pm" В данной функции можно указывать путь расположения файла, а если библиотека расположена в стандартной системной области Perl, то вместо require предпочтительней использовать use().



Abs выражение



abs выражение

Абсолютное значение выражения



Accept NEWSOCKET GENERICSOCKET



accept NEWSOCKET, GENERICSOCKET

Открыть новый сокет по внешнему запросу. Аналогично системному вызову accept(). Возвращает адрес или false в случае неудачи.



Аддитивные операторы



Аддитивные операторы.



'+' - арифметический плюс
'-' - арифметический минус
'.' - конкатенация (объединение) строк


Alarm секунды



alarm секунды

Послать сигнал SIGALARM текущему процессу по истечении указанного промежутка времени. Не допустимо делать несколько вызовов одновременно в одном промежутке времени. Возвращает остаток времени предыдущего счетчика.



Atan2 Y X



atan2 Y, X

Арктангенс отношения Y к X в пределах от -pi до +pi.



Автозагрузка



Автозагрузка.

Если вы попытаетесь вызвать несуществующую функцию, то Perl немедленно выдаст сообщение об ошибке. Но если вы определите подпрограмму с именем 'AUTOLOAD', то она будет вызвана с теми же параметрами, а переменная $AUTOLOAD будет содержать имя несуществующей подпрограммы. Данный механизм очень удобен для средств отладки.



Bind сокет имя



bind сокет, имя

Назначить сетевой адрес сокету. Подобно системному вызову bind. Возвращает true в случае успеха и false иначе. Имя - пакетный адрес сокета.



Binmode файл



binmode файл

Открыть файл для двоичного (binary) режима доступа. В обычном режиме при вводе символы CR LF транслируются в LF, а при выводе LF транслируется в CR LF.



Bless ссылка класс bless ссылка



bless ссылка, класс
bless ссылка

Данная функция определяет что объект указанный ссылкой принадлежит классу. Если класс не указан то он относится к текущему классу. Обычно это последний оператор в конструкторе объекта. Необходимо обязательно указывать имя класса если определяемый объект может наследоваться классом-потомком.



Блоки и оператор switch



Блоки и оператор switch.

Блок не зависимо от того имеет он метку или нет семантически представляет собой цикл который выполняется один раз. Поэтому действие операторов цикла next, last, redo - аналогично описанному выше. Блоки удобны для построения switch (переключатель) структур. В Perl нет специального оператора switch подобного языку С поэтому вы сами можете создавать удобные для вас конструкции. Опыт автора показывает что для простоты написания лучше всего подходит конструкция вида if ... elsif ... else ... хотя можно сочинить и нечто подобное:

SWITCH: { if ($i ==1 ) { .....; last SWITCH; } if ($i ==2 ) { .....; last SWITCH; } if ($i ==3 ) { .....; last SWITCH; } $default = 13; }

Выбирайте сами по своему вкусу.



Caller выражение caller



caller выражение
caller

Возвращает контекст вызова текущей подпрограммы. В скалярном контексте true если это подпрограмма или процедура вызванная операторами eval() или require() и false - иначе. В списковом это список ($package, $filename, $line), где

$package - имя пакета $filename - имя файла пакета $line - номер строки откуда был сделан вызов.

Если указано выражение то возвращается список:

($package, $filename, $line, $subroutine, $hasargs, $wantargs)

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

$subroutine - имя подпрограммы $hasargs - имеющиеся аргументы $wantargs - необходимые аргументы

Применение данной функции в DB пакете возвращает более детальную информацию. К списку аргументов добавляется список @DB::args.



Целочисленная арифметика



Целочисленная арифметика.

По умолчанию Perl выполняет арифметику с плавающей запятой, но если вы укажете:

use integer;

то компилятор будет использовать целочисленную арифметику до конца текущего блока, хотя вложенный блок может это и отменить в своих пределах с помощью:

no integer;

Chdir выражение



chdir выражение

Перейти в директорию указанную выражением. Если выражение отсутствует то перейти в "домашнюю" директорию. Возвращает true в случае успеха и false - неудачи.



Chmod список



chmod список

Изменить права доступа к файлам указанным в списке. Первый элемент в списке - числовое ,обычно восьмеричное значение прав. Возвращает количество файлов которым были изменены права.



Chomp переменная chomp список chomp



chomp переменная
chomp список
chomp

Удаляет в конце строки символ указанный переменной $/. Обычно это 'LF'. Возвращает количество удаленных символов. Если переменная не указана то используется переменная $_. Если указан список то обрабатывается каждая строка списка и возвращается общее количество удаленных символов.



Chop переменная chop список chop



chop переменная
chop список
chop

Полностью аналогично функции chomp но всегда удаляет последний символ строки.



Chown список



chown список

Изменить "владельца" и "группу" файлов списка. Первый элемент - номер нового владельца, второй номер новой группы а далее список файлов. В большинстве Unix-систем вы не сможете сменить владельца если вы не суперпользователь, но можете изменить группу если это одна из ваших "вторичных" групп.



Chr число



chr число

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



Chroot директория



chroot директория

Сделать "корневой" указанную директорию. "Корневая" - значит внутри программы на нее можно ссылаться как '/'.



Цикл for



Цикл for.

LABEL for (EXPR1; EXPR2; EXPR3) BLOCK
Оператор for полностью аналогичен оператору for в С. В перед началом цикла выполняется EXPR1, если EXPR2 = true выполняется блок, затем выполняется EXPR3.



Цикл foreach



Цикл foreach.

LABEL foreach VAR (LIST) BLOCK
Переменной VAR присваивается поочередно каждый элемент списка LIST и выполняется блок. Если VAR опущено, то элементы присваиваются встроенной переменной $_. Если в теле блока изменять значение VAR то это вызовет изменение и элементов списка т.к. VAR фактически указывает на текущий элемент списка. Вместо слова foreach можно писать просто for - это слова синонимы.



Close файл



close файл

Закрыть открытый файл или поток. Можно не использовать, если один и тот же файл открывается повторно, т.к. он будет автоматически закрываться новым вызовом open().



Closedir директория



closedir директория

Закрыть директорию, открытую функцией opendir().



Connect сокет имя



connect сокет, имя

Связаться с удаленным сокетом. Данная функция подобна системному вызову connect(). Возвращает true в случае успеха и false при ошибке.



Cos выражение



cos выражение

Косинус выражения в радианах.



CPAN



CPAN

Программисты всего мира, работающие с Perl, создали общедоступную библиотеку модулей CPAN. Она доступна через Интернет и содержит огромное количество различных по назначению модулей. К ним относятся документаторы, системные интерфейсы, интерфейсы работы с базами данных, работа в сети, с файлами, Интернет-броузеры, системы поиска, огромное количество CGI скриптов для Web серверов и многое-многое другое. Список некоторых CPAN серверов вы можете найти в приложении.



Crypt текст salt



crypt текст, salt

Шифрация текста. Аналогично системному crypt().



Dbmclose хеш



dbmclose хеш

Закрывает связь между хеш и базой данных.



Dbmopen хеш база режим



dbmopen хеш, база, режим

Ассоциировать указанный хеш и базу в определенном режиме. Дело в том, что в Perl реализован очень удобный механизм работы с базами данных типа dbm, ndbm, sbdm, gdbm и Berkeley DB. Для этого нужно связать (открыть) базу под именем хеша. Вся работа с записями базы выполняется так, будто это обычный хеш (ассоциативный массив). Более подробно смотрите описание функции AnyDBM().



Define выражение



define выражение

Возвращает true, если значение определено (существует) и false, если нет. Многие операции завершаются неопределенным значением, например чтение после конца файла, использование неопределенных переменных, системные ошибки и т.д. Данная функция позволяет различать нулевое и неопределенные значения, определенность или неопределенность функций или ссылок. При использовании определенности ключа в хеше она возвращает определен данный ключ или нет, но не существует он или нет.



Декларации (объявления)



Декларации (объявления).

Perl имеет свободный формат. Комментарии начинаются с символа '#' и продолжаются до конца строки. Декларации могут использоваться в любом месте программы так же как и предложения (statements), но действуют они только в фазе компиляции программы. Обычно их помещают или в начале или в конце программы. Декларация подпрограмм позволяет использовать имя подпрограммы как списковый оператор, начиная с момента декларирования.



Delete выражение



delete выражение

Удалить значение из хеша. Возвращает удаляемое значение или неопределенность, если ничего не удаляется. Удаление из массива окружения $ENV{} - изменяет окружение. Удаление из хеша связанного с базой данных - удаляет запись в базе данных.



Die список



die список

Если программа не была запущена из eval(), данная функция выводит список в поток STDERR и завершает работу программы с кодом из переменной $!. Если $! содержит 0, то с кодом ($? >> 8). Если и это 0, то с кодом 255. При вызове из eval() сообщение об ошибке заносится в переменную $@, и eval() завершается с неопределенным значением. Это позволяет отрабатывать ошибочные ситуации, не завершая головной модуль. Если строка из списка не завершается символом '\n', то дополнительно печатается номер строки скрипта, откуда вызвана функция и номер входной строки, если таковой имеется.



Do BLOCK



do BLOCK

Это не совсем функция. Здесь возвращается значение последнего оператора блока. Когда используется циклический модификатор BLOCK исполняется перед проверкой условия цикла в отличии от обычных циклов.



Do подпрограмма



do подпрограмма

Устаревший метод вызова подпрограмм.



Do выражение



do выражение

Значение выражения воспринимается как имя файла Perl скрипта. Изначально это применялось для включения подпрограмм библиотеки. Сейчас правильней использовать вызовы use() и require(), которые обеспечивают контроль ошибок и завершения.



Dump метка



dump метка

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

Внимание! Файлы, открытые до момента дампа, не будут открытыми в момент исполнения новой программой.



Each хеш



each хеш

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



Eof файл eof() eof



eof файл
eof()
eof

Возвращает 1, если выполняется чтение после конца или чтение из не открытого файла. Аргументом должно быть выражение, возвращающее существующий указатель файла. Данную функцию нельзя использовать для чтения файлов, открытых как терминалы. Если аргумент не указан, то используется последний читаемый файл. Использование в форме eof() целесообразно применять в циклах while(<>) для определения конца только последнего файла из списка. Применяйте eof(ARGV) или eof для определения конца каждого файла из списка.



Eval выражение eval блок



eval выражение
eval блок

Выражение сканируется и выполняется как обычная Perl программа. Это делается в контексте текущей программы, поэтому можно использовать уже определенные переменные и подпрограммы. Возвращается результат последнего оператора в блоке или значение оператора return. Если обнаружится синтаксическая ошибка или выполнится оператор die, то возвращается неопределенное значение, а переменная $@ содержит сообщение об ошибке. Если ошибки не было, то $@ содержит нулевую строку. При отсутствии аргумента берется значение переменной $_.



Exec список



exec список

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

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



Exists выражение



exists выражение

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



Exit выражение



exit выражение

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



Exp выражение



exp выражение

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



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



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

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



Fileno файл



fileno файл

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



Flock файл операция



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

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



Fock



fock

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



Format



format

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



Форматы



Форматы.

В Perl реализован удобный метод создания форматированных отчетов. С помощью оператора format вы описываете заголовки, размеры полей, указываете положение данных на листе в удобной текстовой форме. Затем выполняете команду write(файл), которая выводит отформатированные данные в указанный файл.

Оператор format имеет следующий синтаксис:

format имя = FORMLIST .

Обратите внимание на то, что описание формата идет после строки format и заканчивается символом '.' в начале строки.

Здесь 'имя' - это имя формата, такое же как и имя указателя выходного файла. Если 'имя' отсутствует то значение по умолчанию - STDOUT.

FORMLIST - это строки формата. Они бывают трех типов:

Комментарий. Строка начинается символом '#'. Описатель полей данных (picture). Строка аргументов используемых описателем.

Описатель - это строка, которая выводится в виде "как есть" за исключением специально обозначенных форматов полей данных. Каждое поле начинается либо символом '@', либо '^'. В описательной строке указывается только положение и вид выводимых данных, но не имена полей и переменных. Для этого предназначена следующая строка аргументов которая следует всегда после описателя и содержит имена переменных или целые выражения в порядке указанном описателем.

Размер и вид поля в описателе обозначается следующими символами:

"<<<<" - выравнить значение по правому краю.
">>>>" - -//- по левому.
"||||" - -//- по центру.
"####.###" - формат числа с точкой.
"@*" - многострочная строка. Данные выводятся в колонку.

Размер поля равен количеству указанных символов.
Символ '^' в начале поля имеет специальное значение.
Так:

"^####" - пусто если переменная не определена.

для строчного скаляра:

"^