Введение в Perl

         

Formline формат список



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

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



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



getc файл
getc

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

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



getlogin

Возвращает текущий login из файла /etc/utmp Не применяйте для идентификации пользователя, он не так сильно "закрыт" как getpwuid().

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



getpeername сокет

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



с указанным PID. Если аргумент



getpgrp PID

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

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



getppid

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

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



getpriority WHICH, WHO

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

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



getsockname сокет

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

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



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.

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



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

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]);



Hex выражение



hex выражение

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



If (EXPR) BLOCK Вычисляется логическое



if (EXPR) BLOCK - Вычисляется логическое выражение EXPR и если true блок выполняется.


Именованные унарные операторы



Именованные унарные операторы.

Фактически это функции с одним аргументом. Круглые скобки можно опускать.



Import



import

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



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



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

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



Int выражение



int выражение

Возвращает целую часть выражения.



Интернет ссылки и литература



Интернет - ссылки и литература.

Очень полезные USENET конференции:

comp.lang.perl.announce - Различные объявления и сообщения. comp.lang.perl.misc - Место для вопросов и обсуждений. comp.lang.perl.modules - Модули Perl. comp.lang.perl.tk - Perl и Tcl/tk.

WWW сервера:

Специальный Perl-сервер Книги по Unix издательства O`Reily Специализированный FTP сервер Список модулей

Список литературы.

При написании книги автор в основном пользовался описанием Perl "Perl Programmers Reference Guide".
Наиболее известная зарубежная литература:

Programming Perl (the Camel Book) Learning Perl (Llama Book)

Ioctl FILEHANDLE FUNCTION SCALAR



ioctl FILEHANDLE, FUNCTION, SCALAR

Выполняет системный вызов ioctl(). В начале программы необходимо указать: require "ioctl.ph";



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



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

Соединяет строки списка или массива в одну строку с кодом разделителя, равному выражению.



Keys хеш



keys хеш

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



Kill список



kill список

Послать сигнал (первый элемент) указанным в списке процессам. Возвращает количество процессов которые сигнал приняли.



Классы



Классы.

В Perl нет специального синтаксиса для классов. Но функционально полноценными классами могут быть модули. При этом подпрограммы модуля становятся методами, а с помощью массива @ISA можно реализовать механизм наследования в классах. Более подробно классы описаны отдельно.



Конструкторы и деструкторы



Конструкторы и деструкторы.

Конструктор - это подпрограмма, которая выполняется в момент создания объекта, а деструктор - удаления объекта. Для модуля это подпрограммы с именами BEGIN и END. При определении этих подпрограмм слово sub можно опускать.

Конструктор BEGIN выполняется сразу как только возможно, т.е. как только он определен, даже не завершая дальнейший разбор программы. Можно указать несколько блоков BEGIN. Они будут выполняться один за другим в порядке определения.

Деструктор END выполняется последним как только возможно, т.е. при завершении работы интерпретатора. Можно указать несколько блоков END, при этом они будут выполняться в обратном определению порядке.



Конструкторы скаляров



Конструкторы скаляров.

Числа пишутся стандартно:

123 123.123 0.12 .12E-10 0xABCD # Шестнадцатиричная запись 0377 # Если 0 в начале - восьмеричная 123_456_123 # Так тоже можно для удобства чтения.

Строки ограничиваются одинарными (') или двойными (") кавычками:

'Равняйсь, смирно!' "Построимся и спасемся."

Способов обозначения строк очень много. Смотрите описание оператора qq.

В хеше можно опускать кавычки, если индекс не содержит пробелов.



Конструкторы списков



Конструкторы списков.

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



Контекст



Контекст.

Большое значение для правильного употребления встроенных функций имеет контекст использования результата этих функций, т.к. в противном случае они возвращают совершенно "непонятный" результат. В Perl имеется два главных контекста: скалярный и список (list). Проще говоря, если в левой части выражения имеется ввиду одно единственное значение, то это скалярный контекст. Если множество значений - список.



Last метка last



last метка
last

Функция аналогичная break в С. Прерывает цикл и переходит на указанную метку. Если метки нет на ближайший внешний цикл. Блок continue не выполняется.



Last подобен оператору break в



last - подобен оператору break в языке С. Немедленно прерывает цикл. Блок continue пропускается.



Lc выражение



lc выражение

Преобразовать строку в буквы нижнего регистра.



Lcfirst выражение



lcfirst выражение

Заменить первую букву строки на малую.



Length выражение



length выражение

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



Link OLDFILE NEWFILE



link OLDFILE, NEWFILE

Создать файл NEWFILE связанный с файлом OLDFILE.



Listen SOCKET QUEUESIZE



listen SOCKET, QUEUESIZE

Выполнить системный listen().



Local список



local список

Объявляет перечисленные переменные как локальные в текущем блоке или подпрограмме. Если указано два и более имени, их необходимо заключить в круглые скобки. Предпочтительней использовать функцию my().



Localtime выражение



localtime выражение

Преобразовать 9-элементный массив, возвращаемый функцией time, относительно местного времени. Употребляется как:

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

Log выражение



log выражение

Возвращает натуральный логарифм выражения.



Логические операторы && (AND) и || (OR)



Логические операторы && (AND) и || (OR).

'&&' - если левое выражение возвращает false, правое не выполняется.
'||' - если левое выражение возвращает true, правое не выполняется.

Отличие от подобных операторов в С заключается в том, что в С возвращаемое значение либо 0, либо 1, тогда как в Perl возвращается результат выражения.



Lstat файл lstat выражение



lstat файл
lstat выражение

То же что и системный вызов stat(), но касательно ссылки на файл, а не самого файла.



M//



m//

Оператор совпадения. Смотри главу Операторы



Map блок список map выражение список



map блок, список
map выражение, список

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



Mkdir директория права



mkdir директория, права

Создать директорию с указанными правами доступа. Возвращает 1 при успехе, и 0 при неудаче.



Модули (packages)



Модули (packages).

Таблицы имен Конструкторы и деструкторы Классы Создание библиотеки Pragma библиотеки Стандартные библиотеки CPAN

В Perl реализован механизм модулей. Модуль это группа подпрограмм и переменных обычно включенных в один файл. Внутри одного модуля можно определить другой модуль. Начало модуля определяется директивой:

packages имя_модуля;

Конец модуля это конец блока или файла. Головной модуль имеет по умолчанию имя main. На имя внутри модуля можно ссылаться, добавляя '::' после имени модуля.

Например:

$main::var1 - переменная в головном модуле. ::var1 - то же самое. Имя main можно опускать. $модуль1::var1 - переменная в модуле 'модуль1' $модуль1::модуль2::var1 - Модуль2 содержится в модуле 1.

Только идентификаторы, начинающиеся с буквы или символа '_', хранятся в пространстве имен текущего модуля. Остальные хранятся в пространстве головного модуля main. Кроме этого имена STDIN, STDOUT, STDERR, ARGV, ARGVOUT, ENV, INC и SIG так же хранятся в головном модуле.



Msgctl ID CMD ARG



msgctl ID, CMD, ARG

Системный вызов msgctl() System V



Msgget KEY FLAGS



msgget KEY, FLAGS

Системный вызов msgget() System V



Msgrcv ID VAR SIZE TYPE FLAGS



msgrcv ID, VAR, SIZE, TYPE, FLAGS

Системный вызов msgrcv() System V



Msgsnd ID MSG FLAGS



msgsnd ID, MSG, FLAGS

Системный вызов msgsnd() System V



Мультипликативные операторы



Мультипликативные операторы.

'*' - арифметическое умножение
'/' - арифметическое деление
'%' - арифметический модуль
'x' - оператор повторения

В скалярном контексте возвращает строку левой части, повторенную величиной, указанной в правой части. В списковом контексте, если в левой части список, то в круглых скобках - повторенный список.