Введение в Perl

         

Sort подпрограмма список sort блок список sort список



sort подпрограмма список
sort блок список
sort список

Сортирует элементы списка и возвращает полученный список. Несуществующие элементы списка отбрасываются. Если не указано имя подпрограммы или блок, то сортирует в стандартном строковом порядке. Указанная подпрограмма возвращает значения больше, меньше или равное нулю в зависимости от двух соседних элементов списка. Имя подпрограммы может быть указано переменной. Она не должна быть рекурсивной, и два сравниваемых элемента списка передаются как глобальные переменные $main::a и $main::b. Это ссылки, поэтому их изменение приводит к изменению самих элементов списка.



Создание библиотеки



Создание библиотеки.

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

package имя_модуля; # Такое же как и имя этого файла без расширения '.pm' require Exporter; # Обязательная строка для экспорта имен @ISA = qw(Exporter); # -//- @EXPORT = qw(func1 func2) # Перечисляем имена функций. Внимание ! нет запятой! @EXPORT_OK = qw( $переменная @массив ); # Указать публичные переменные, массивы и т.д. если необходимо { # Начало блока модуля ..... sub func1 ........ sub func2 ........ 1; }

Данный файл с расширением ".pm" должен храниться в одной из библиотечных директорий Perl. Они перечислены в массиве @INC, одна из них обычно "/usr/local/lib/perl/".

В головной программе вы указываете:

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

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

Perl библиотеки.

Стандартный набор библиотек обычно поставляется с дистрибутивом Perl, они разделяются на pragma библиотеки (работают как директивы компилятору) и стандартные библиотеки.





Splice массив смещение длина список



splice массив, смещение, длина, список
splice массив, смещение, длина
splice массив, смещение

Удаляет элементы массива, начиная со смещения и указанной длины. Заменяет их указанным списком. Возвращает удаленный список. Если длина не указана, удаляет все элементы списка, начиная со смещения.



Split /шаблон/ выражение предел



split /шаблон/, выражение, предел
split /шаблон/, выражение
split /шаблон/
split

Разделяет строку, указанную выражением, на массив элементов и возвращает его. В скалярном контексте возвращает количество полученных элементов массива, а сам массив помещает в @_ (в списковом контексте поместить результат в @_ можно если применить ?шаблон?) Если выражение отсутствует, то обрабатывается содержимое переменной $_. Если шаблон отсутствует, то разделителем является пробел. Все, что подходит по шаблону, считается разделителем. Если указан предел, то это максимальное число разделений. Отрицательное значение предела воспринимается как неограниченно большой предел. Если пустая строка походит под шаблон разделителя, то исходное значение разделяется посимвольно. Предел удобно использовать для частичного разделения строки.



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



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

Форматирует список по указанному формату аналогично функции sprintf() языка С.



Sqrt выражение



sqrt выражение

Возвращает корень квадратный выражения.



Srand выражение



srand выражение

Задает начальное значение для генератора случайных чисел - оператора rand. Если аргумент отсутствует, то используется текущее машинное время.



Стандартные библиотеки



Стандартные библиотеки.

AnyDBM_File
Возможность работы с разными типами баз данных.

AutoLoader
Загрузка в память функций только во время вызова.

AutoSplit
Разделить модуль для автозагрузки.

Benchmark
Анализ скорости исполнения программы.

Carp
Предупреждения об ошибках.

Config
Доступ к конфигурации Perl.

Cwd
Получить имя текущей рабочей директории.

DB_File
Работа с базой данных формата Berkley DB.

Devel::SelfStubber
Режим отладки автозагрузки.

DynaLoader
Динамическая загрузка библиотек C.

English
Использовать длинные имена встроенных переменных.

Env
Импортировать имена переменных окружения

Exporter
Обеспечивает экспорт/импорт для модулей.

ExtUtils::LibList
Определяет используемые библиотеки.

ExtUtils::MakeMaker
Создает файл проекта Makefile

ExtUtils::Manifest
Программы для создания и проверки файла MANIFEST

ExtUtils::Mkbootstrap
Применение файла начальной загрузки для DynaLoader.

Fcntl
Определения как и в С Fcntl.h

File::Basename
Синтаксический разбор спецификации файла.

File::CheckTree
Быстрый проход по директориям диска.

File::Find
Быстрый поиск файлов по директориям.

FileHandle
Обеспечивает объектный метод доступа к указателям файлов.

File::Path
Создание/удаление директорий.

Getopt::Long
Расширенная обработка опций.

Getopt::Std
Стандартная обработка опций.

I18N::Collate
Сравнение символов локальной кодировки.

IPC::Open2
Межпроцессорный обмен по чтению и записи.

IPC::Open3
Межпроцессорный обмен по чтению, записи, и обработки ошибок.

Net::Ping
Тест доступа к хосту.

POSIX
Стандартный интерфейс по IEEE Std 1003.1

SelfLoader
Загрузка функций только по вызову.

Socket
Определение структур и констант как и в С socket.h

Test::Harness
Стандартный тест с статистикой.

Text::Abbrev
Создание таблицы сокращений по списку.

Подробное описание каждой библиотеки записано в самом файле.



Stat файл stat выражение



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

Возвращает 13 элементный массив параметров указанного файла или пустой список при ошибке. Применяется обычно следующим образом:

($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks) = stat($filename);

где

$dev - имя устройства $ino - номер i-узла $mode - права доступа $nlink - количество связей $uid - идентификатор владельца $gid - идентификатор группы $rdev - тип устройства $size - размер файла в байтах $atime - дата последнего обращения $mtime - дата последней модификации $ctime - дата последнего изменения статуса $blksize - размер блока на диске $blocks - количество блоков в файле.

Если указан аргумент '_', то возвращается результат предыдущего вызова stat().



Study скаляр study



study скаляр
study

Включение метода частотного сравнения. Целесообразность применения зависит от количества поисков и количества констант в строке в которой ведется поиск. Функция работает следующим образом: Для указанного скаляра (если аргумент отсутствует берется значение переменной $_) строится список указателей на каждый символ строки. Затем, когда начинается поиск, первыми просматриваются символы, которые наиболее редко встречаются в английском языке. Выигрыш по времени очевиден, когда выполняется многократный поиск в одной и той же строке, и время затраченное на индексацию окупается.



Substr выражение смещение длина substr выражение смещение



substr выражение, смещение, длина
substr выражение, смещение

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



Symlink старый_файл новый_файл



symlink старый_файл, новый_файл

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



Syscall список



syscall список

Выполняет системную функцию. Первый элемент списка - это имя функции, а остальные элементы - ее аргументы. Если функция не выполнима, то возвращается фатальная ошибка. Аргументы интерпретируются следующим образом. Если аргумент число, то оно считается целым. Если не число, то аргумент считается указателем на строку. Вам необходимо обеспечить достаточную длину аргумента для подстановки значения указателя. В Perl передается максимум 14 параметров. Обычно этого достаточно.



Sysread файл скаляр длина смещение sysread файл скаляр длина



sysread файл, скаляр, длина, смещение
sysread файл, скаляр, длина

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



System список



system список

Делает то же самое, что и "exec список" с той лишь разницей, что вызов fork() делается первым, и родительский процесс ждет завершения потомка. Возвращает значение аналогичное функции wait(). Для получения действительного кода завершения необходимо разделить на 256.



Syswrite файл скаляр длина смещение



syswrite файл, скаляр, длина, смещение
syswrite файл, скаляр, длина

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



Таблицы имен



Таблицы имен.

Все имена модуля хранятся в ассоциативном массиве (хеше) с именем модуля, к которому добавлены символы "::". Таким образом имена головного модуля хранятся в %main:: , модуля 'mod1' в %mod1:: и т.д. Выражение вида *имя указывает значение элемента хеша 'имя', это удобно для определения констант.

Например:

*pi = \3.14159;

Здесь переменная $pi - это константа пи, которую уже нельзя изменить.



Tell файл tell



tell файл
tell

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



Telldir директория



telldir директория

Возвращает текущую позицию указателя в открытой директории. Обычно это параметр для позиционирования указателя директории функцией seekdir().



Термы и левосторонние списковые операторы



Термы и левосторонние списковые операторы.

Любой терм имеет самый высокий приоритет. К терму относятся переменные, кавычки и их операторы, арифметические и логические выражения в скобках, любые функции с параметрами в скобках. Фактически таких функций нет, так как это просто унарные и списковые операторы. Просто они ведут себя подобно функциям с параметрами в скобках. Подробно смотри главу Функции.

Если после любого спискового оператора ( print(), и т.д.) или унарного оператора (chdir(), и т.д.) следует левая круглая скобка, то операторы внутри скобок имеют наивысший приоритет. Так же как и обычные функции.

Если скобки отсутствуют, то приоритет списковых операторов или наивысший или наименьший в отношении операторов справа или слева от него.

Например:

@i = ('a ','b ', print 'c ', 'd '); print "\n",@i,"\n";

Результат:

c d a b 1

Здесь мы имеем списковый оператор print. Для запятых слева от него он имеет наименьший приоритет, но повышает приоритет правой запятой. Поэтому правая запятая воспринимается как параметр для print и печатается 'c d', а левая просто записывает код завершения операции в массив @i и последний print показывает это.

Оператор '->'

Так же как в С или С++ это инфиксный оператор переадресации. Если справа от него стоит [...] или {...} выражение, то правая часть может быть непосредственной или символической ссылкой на массив или хеш. В противном случае правая сторона это метод или простой скаляр, содержащий имя метода, а правая - или объект или имя класса. Подробно смотри главу Классы.

Операторы ++ (инкремент) и -- (декремент).

Эти операторы работают так же как и в С. Если оператор стоит перед переменной, то значение переменной изменяется на 1 и полученное значение используется. Если после переменной - то ее величина изменяется после применения.

Употребление инкремента к строковым переменным в Perl имеет одну особенность. Каждый символ остается в своем классе (большие, малые, цифры) и учитывается перенос предыдущего символа. Таким образом строковые переменные с цифрами работают как числовые переменные.



Tie переменная класс список



tie переменная, класс, список

Присваивает переменную классу. Список - это аргументы new метода класса (TIESCALAR, TIEARRAY или TIEHASH). Возвращает указатель на созданный новый объект класса, который удобен для вызова других методов класса.

Внимание! Такие функции как keys() и values() могут вернуть в качестве значения огромное количество данных.

Для создания объекта ассоциативного типа необходимо определение следующих методов:

TIEHASH classname, LIST DESTROY this FETCH this, key STORE this, key, value DELETE this, key EXISTS this, key FIRSTKEY this NEXTKEY this, lastkey

Обычного массива:

TIEHASH classname, LIST DESTROY this FETCH this, key STORE this, key, value [others TBD]

Скалярного типа:

TIEHASH classname, LIST DESTROY this FETCH this, key STORE this, key, value

Time



time

Возвращает количество секунд, начиная с 1 января 1970 г 00:00:00 UTC. Годы не разделяются на високосные.



Times



times

Возвращает 4-х элементный массив значений:

($user, $system, $cuser, $csystem) = times;

где:

$user - пользовательское время процесса в секундах. $system - системное время текущего процесса. $cuser - время процесса-потомка текущего процесса. $csystem - его системное время.

Тип typeglobs



Тип typeglobs

В Perl используется специальный внутренний тип typeglog для записи массива всех переменных. Такие массивы начинаются с символа '*'. Их удобно применять для передачи ссылок на массивы и хеши, но в данной версии Perl уже есть возможность применять ссылки, поэтому это делается очень редко. Единственно где это необходимо, так это для работы со ссылками на файлы. Например, если вам нужно создать локальную ссылку на файл в процедуре, то это лучше сделать так:

sub new_sub { local *IN; # Ссылка на файл open (IN, "test") || return undef; # Открыть файл. Возврат при ошибке. ......... return; }

Более подробно это описано в главе Ссылки.



Tr///



tr///

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



Truncate файл длина truncate выражение длина



truncate файл, длина
truncate выражение, длина

Усекает длину указанного файла.



Uc выражение



uc выражение

Возвращает строку выражения, в которой малые буквы заменены на заглавные.



Ucfirst выражение



ucfirst выражение

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



Umask выражение umask



umask выражение
umask

Устанавливает маску umask и возвращает старое значение. Без аргумента возвращает текущее значение.



Унарные операторы



Унарные операторы.

'!' - логическое отрицание
'-' - арифметический минус
'~' - побитная инверсия (дополнение до 1)
'+' - арифметический плюс
'\' - получение ссылки на переменную (как & в С)


Undef выражение undef



undef выражение undef

Делает неопределенным значение выражения. Применяется только для скалярных переменных, целых массивов или подпрограмм. Всегда возвращает неопределенное значение.



Unlink список



unlink список

Удаляет файлы, указанные в списке. Возвращает количество удаленных файлов. Только супервизор может удалять директории с файлами, если Perl запущен с ключом -U.



Unpack шаблон выражение



unpack шаблон, выражение

Функция, обратная pack(). Распаковывает строку выражения по указанному шаблону в массив значений. В скалярном контексте возвращает значение только первого элемента. Шаблоны такие же как и в pack().

Символ '%' в шаблоне означает, что вы хотите получить вместо значения его контрольную сумму. По умолчанию - 16-битную.



Unshift массив список



unshift массив, список

Противоположное shift. Помещает элементы списка в начало массива.



Untie переменная



untie переменная

Исключает переменную из класса указанного tie().



Use модуль список use модуль



use модуль список
use модуль

Указывает библиотечный модуль, из которого можно вызывать подпрограммы. Список перечисляет имена подпрограмм, которые добавляются к текущей области имен. Если не указан, то все имена. Действие аналогично блоку:

BEGIN { require модуль; import модуль список; }

Сам модуль должен располагаться в системной области Perl файлов.



Условный оператор '? '



Условный оператор '?:'

Этот оператор работает так же как и в С. Если выражение перед '?' истинно, то выполняется аргумент перед ':' - иначе после ':'.



Utime список



utime список

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



Values хеш



values хеш

Возвращает обычный массив со всеми значениями хеша. В скалярном контексте возвращает количество значений хеша.



Vec выражение смещение бит



vec выражение, смещение, бит

Возвращает значение строки как вектор беззнаковых целых.



Встроенные функции



Встроенные функции.

Встроенные функции используются как термы выражений и подразделяются на две категории: списковые операторы и унарные операторы. Это влияет на их приоритет по отношению к оператору ',' - запятая. Списковые операторы могут иметь множество (список) аргументов, а унарные только один. Таким образом, запятая завершает аргументы унарного оператора и разделяет аргументы спискового. Аргумент унарного оператора воспринимается обычно в скалярном контексте, а спискового как в скалярном, так и списковом, причем скалярные аргументы идут первыми. В дальнейшем списковые аргументы мы будем обозначать словом 'LIST', это значит, что функция имеет список аргументов, разделенных запятой. Аргументы функций можно заключать в круглые скобки и таким образом обозначать, что "это функция" и приоритет не имеет значения, иначе это списковый или унарный оператор с определенным фиксированным приоритетом. Пробел после имени функции и скобкой значения не имеет. Поэтому будьте внимательны!



Встроенные переменные Perl



Встроенные переменные Perl.

Описанные в данной главе переменные имеют в Perl специальные значения. Они обозначаются несколько непривычно для "глаза" программистов, т.к. состоят обычно только из двух символов, причем первый это '$' символ, с которого начинаются имена всех переменных, и произвольный часто не буквенно-цифровой символ. Если вы хотите пользоваться их "нормальными" буквенными синонимами, то вам нужно указать в начале программы:

use English;

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

use FileHandle;

после этого можно просто писать:

метод указатель выражение

или

указатель -> метод(выражение)

Ниже приводятся имена как в короткой, так и в длинной (словесной) форме. Некоторые из встроенных переменных имеют доступ только на чтение, поэтому изменить их значение просто невозможно.

$_
$ARG

Переменная - по умолчанию для операторов ввода и поиска. То есть если в качестве аргумента не указана никакая переменная, то используется именно эта.

$цифра

Содержит найденную подстроку в последнем поиске, когда шаблон содержит метасимволы в круглых скобках. Цифра в данном случае, это номер скобок. Первая подстрока имеет номер 1.

$&
$MATCH

Найденная подстрока в последнем поиске по шаблону.

$`

Подстрока, предшествующая найденной подстроке.

$'
$POSTMATCH

Подстрока, последующая за найденной подстрокой.

$+
$LAST_PAREN_MATCH

Подстрока, найденная в поиске с выбором по "или".

$*
$MULTILINE_MATCHING

Если значение этой переменной установить равным 1, то переменная, в которой осуществляется поиск, будет считаться многострочной, т.е. содержащей символы '\n' - перевод строки. Если значение равно 0, то переменная считается однострочной. В Perl версии 5 и выше не рекомендуется использовать эту переменную.

$.
$INPUT_LINE_NUMBER
$NR

Номер прочитанной строки последнего оператора ввода. Закрытие файла вызывает очистку значения этой переменной.

$/
$RS
$INPUT_RECORD_SEPARATOR

Символ - признак конца входной строки. По умолчанию это '\n'

$|
$OUTPUT_AUTOFLUSH

Если присвоить этой переменной ненулевое значение, то будет сброс буфера вывода после каждой операции вывода. Значение по умолчанию - 0

$,
$OFS
$OUTPUT_FIELD_SEPARATOR

Символ, добавляемый оператором print после каждого элемента из списка параметров.

$\
$ORS
$OUTPUT_RECORD_SEPARATOR

Символ, добавляемый print после вывода всех параметров.

$"
$LIST_SEPARATOR

Аналогичен "$,", но добавляется после каждого элемента массива, указанного в "....".

$;
$SUBSEP
$SUBSCRIPT_SEPARATOR

Символ - разделитель для эмуляции многомерных массивов в хеш массивах. По умолчанию '\034'.

$#
$OFMT

Формат по умолчанию для вывода чисел.

$%
$FORMAT_PAGE_NUMBER

Формат по умолчанию для вывода номеров страниц.

$=
$FORMAT_LINES_PER_PAGE

Длина одной страницы. По умолчанию 60 строк.

$-
$FORMAT_LINES_LEFT

Количество оставшихся строк на странице.

$~
$FORMAT_NAME

Имя формата текущего вывода. По умолчанию имя указателя.

$^
$FORMAT_TOP_NAME

Имя текущего формата для заголовка страницы.

$:
$FORMAT_LINE_BREAK_CHARACTERS

Символы переноса строки для многострочных полей. В строке формата такие поля начинаются символом '^'. По умолчанию '\n-'.

$^L
$FORMAT_FORMFEED

Символ перевода формата ( смены листа). По умолчанию '\f'.

$^A
$ACCUMULATOR

Текущее значение аккумулятора функции write() для format(). Значение этой переменной можно увидеть только при использовании функции formline(), т.к. write() очищает ее после каждого вывода.

$?
$CHILD_ERROR

Данная переменная содержит статус завершения таких процессов как: закрытие pipe, завершение функций system(), wait() и `...`.

$!
$ERRNO $OS_ERROR

В числовом контексте возвращает код ошибки errno. В строковом - строку сообщения об ошибке. Можно принудительно присвоить этой переменной код ошибки, что бы получить системное сообщение для данного кода или установить код завершения для функции die().

$@
$EVAL_ERROR

Сообщение об ошибке последней команды eval().

$$
$PID
$PROCESS_ID

Номер текущего процесса.

$<
$UID
$REAL_USER_ID

Реальный UID текущего процесса.

$>
$EUID
$EFFECTIVE_USER_ID

Эффективный UID текущего процесса.

$( $GID
$REAL_GROUP_ID

Реальный GID текущего процесса.

$)
$EGID
$EFFECTIVE_GROUP_ID

Эффективный GID текущего процесса.

$O
$PROGRAM_NAME

Имя файла программы. Если этой переменной присвоить какое-нибудь значение, то его можно видеть в команде ps, что удобно для контроля за состоянием программы.

$[

Номер первого элемента массива или символа строки. Значение по умолчанию - 0.

$]
$PERL_VERSION

Строка - сообщение версии Perl. Печатается по команде perl -v Применяется в программе для определения рабочей версии Perl. В числовом контексте это номер версии плюс номер модификации / 1000.

$^D
$DEBUGGING

Текущее значение ключа отладки '-D'.

$^F
$SYSTEM_FD_MAX

Номер максимального системного описателя файлов (system file descriptor). Обычно это 2.

$^I
$INPLACE_EDIT

Текущее значение inplace-edit возможности. Для отключения используйте undef.

$^P
$PERLDB

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

$^T
$BASETIME

Время в секундах с начала 1970 года старта текущей программы.

$^W
$WARNING

Значение флага '-w'. true -если включено и false - выключено.

$^X
$EXECUTABLE_NAME

Команда запуска Perl. Аналогично argv[0] в С.

$ARGV

Имя текущего файла, читаемого оператором '<>'.

@ARGV

Массив параметров строки запуска программы. Внимание! @#ARGV - меньше количества параметров на 1, т.к. $ARGV[0] это первый параметр (не имя программы).

@INC

Список директорий диска, которые просматривает Perl для выполнения команд do, require или use.

%INC

Этот хеш содержит имена директорий для имен использованных файлов командами do или require. Ключ - имя файла, а значение - директория.

$ENV{выражение}

Хеш %ENV содержит значения переменных окружения. Изменение этих значений вызывает изменение окружения для процессов потомков.

$SIG{выражение}

Хеш %SIG содержит имена подпрограмм для таких системных сигналов как INT, QUIT, PIPE, ... Значение 'DEFAULT' - для системной обработки. 'IGNORE' - игнорировать данный сигнал.



В книге приводятся начальные сведения



Введение в Perl

В книге приводятся начальные сведения по новому языку программирования Perl. Данный язык получил широкое распространение в связи с развитием компьютерной сети Интернет. Все примеры в книге проверены для Perl версии 5.003 операционной системы Unix FreeBSD 2.1.0.
Для программистов, системных администраторов и пользователей компьютеров.
© Маслов Владимир Викторович.
Содержание
От простого к сложному Запуск Perl - программы Синтаксис Декларации (объявления) Простое предложение Сложные предложения Циклы while Операторы управления циклом next last redo for foreach Блоки и оператор switch Оператор goto POD операторы. Документирование программ Переменные Контекст Скалярные значения Конструкторы скаляров Конструкторы списков Тип typeglobs Встроенные переменные Регулярные выражения (шаблоны) Операторы и приоритеты Термы и левосторонние списковые операторы Унарные операторы Операторы "привязки" =~ и != Мультипликативные операторы Аддитивные операторы Операторы сдвига Именованные унарные операторы Операторы отношений Операторы равенства Операторы работы с битами Логические операторы && (AND) и || (OR) Оператор диапазона '..' Условный оператор '?:' Операторы присваивания Оператор ',' (запятая) Логические not, and, or, xor Операторы ограничители строк Операторы ввода-вывода Слияние констант Целочисленная арифметика Встроенные функции Подпрограммы Private переменные Переменные типа local Прототипы (prototypes) Ссылка как параметр Переопределение встроенных функций Автозагрузка Модули Таблицы имен Конструкторы и деструкторы Классы Создание библиотеки Pragma библиотеки Стандартные библиотеки CPAN Форматы отчетов Отладка Интернет - ссылки и литература Все замечания и предложения направляйте по адресу:
maslov@klgtts.kaluga.su
maslov@news.kaluga.rosmail.com

Wait



wait

Ожидать окончание порожденного процесса. Возвращает PID для родительского процесса или -1, если нет - процесса потомка. Код завершения записывается в переменную $?.



Waitpid PID FLAGS



waitpid PID, FLAGS

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



Wantarray



wantarray

Возвращает true, если подпрограмма вызывается в списковом контексте и false - в скалярном.



Warn список



warn список

Выводит в стандартный поток ошибок STDERR сообщение аналогично die(), но не прекращает работу программы.



Write файл write выражение write



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

Выводит в файл форматированные данные по оператору format. По умолчанию имя формата совпадает с именем указателя файла. Имя файла по умолчанию можно изменить функцией select(), а имя формата при этом надо присвоить переменной $~. Заголовок листа пишется автоматически. Если на листе не хватает места для вывода, то выводится "перевод формата" и специальная форма заголовка листа, затем сами записи. По умолчанию имя формата заголовка листа состоит из имени указателя файла и добавленной строки "_TOP". Динамически это можно делать, присваивая формат переменной $^. Количество оставшихся строк листа содержится в переменной $- и если присвоить ей 0, то произойдет смена листа. Подробно описание форматов смотри в главе Форматы.



Y///



y///

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



Запуск интерпретатора Perl



Запуск интерпретатора Perl

Синтаксис:

perl [ключи] файл аргументы

Перед стартом Perl ищет скрипт (программу) в следующем порядке:

В командной строке если указан ключ '-e' Содержимое файла указанного в командной строке. В первой строке можно указывать #!/usr/bin/perl для "автоматического" запуска скрипта. Стандартный ввод/вывод, если не указан файл или аргументы, содержащие имя файла. Для передачи аргументов скрипту из стандартного потока, имя файла в командной строке обозначается символом '-'.

В методах 1 и 2 Perl сканирует строки, начиная с первой, если не указан ключ '-x', в противном случае началом программы считается строка с символами '#!' в начале и содержащая слово 'perl'. Концом программы считается строка '__END__'. В строке с '#!' можно указывать и ключи. Например '#!/bin/perl -d' для отладки программ.

После "обнаружения" скрипта Perl компилирует его целиком во внутреннее представление. Если обнаруживаются ошибки, то выполнение прекращается. Если ошибок нет, он выполняется. Если скрипт заканчивается без команд exit() или die(), то по умолчанию выполняется команда exit(0), обозначающая нормальное завершение программы.

Ключи:

-O цифры
Код символа-разделителя записей. По умолчанию \0. -a
Включает режим автоматического разделения (split) переменной $_ в массив $F. Применяется с ключами -n и -p. -c
Выполняется синтаксическая проверка скрипта и выход без запуска. -d
Запуск в режиме интерактивной отладки. -D число или D список
Установить флаги отладки Perl. Например -d14 проследить как Perl исполняет вашу программу.
1 p Синтаксический разбор
2 s Состояние стека
4 l Состояние стека имен
8 t Трассировка исполнения
16 o Создание оператора узла
32 c Строковое/числовое преобразование
64 p Вывод команды препроцессора для -P
128 m Распределение памяти
256 f Обработка формата
512 r Синтаксический разбор регулярных выражений
1024 x Дамп синтаксического дерева
2048 u Проверка защиты
4096 L "Утечка" памяти
8192 H Дамп хеша
16384 X Распределение scratchpad
32768 D Очистка
-e команда
Выполнение скрипта из одной строки указанного в командной строке. -F шаблон
Указывает шаблон разделения в режиме работы с ключом -a -i расширение
Применяется для резервной копии файла обрабатываемого оператором '<>'. Оригинал хранится в файле с тем же именем, что и исходный, но с указанным расширением.
Пример: perl -p -i.old -e "s/рядовой/ефрейтор/" file Поменять все слова "рядовой" на "ефрейтор" в файле file, а оригинал записать в файле file.old -I директория
Директория includ- файлов для С препроцессора. Применяется с ключом -P по умолчанию это /usr/include и /usr/lib/perl. -l число
Автоматическая обработка символа конца строки. Работает в двух случаях. Отбрасывает последний символ читаемых строк для режимов -n и -p Присваивает указанное значение переменной $\. Таким образом к концу каждой строки выводимой оператором print добавляется этот символ. -n
Зацикливает скрипт и последовательно обрабатывает файлы указанные в командной строке. Позволяет создавать команды подобные sed или awk. Операторы BEGIN и END дают возможность делать начальные и конечные установки. Содержимое файлов не выводится. -p
То же что и -n, но печатает обрабатываемые строки файлов. -P
Предварительная обработка препроцессором языка С. Будьте внимательны и не применяйте в комментариях слова 'if', 'else' или 'define', т.к. это команды С - препроцессора. -s
Включение режима обработки ключей командной строки запуска скрипта. Все аргументы с символом '-' в начале, считаются ключом, и переменным с таким же именем присваивается значение true. -S
Использование системной переменной PATH для поиска скрипта. Данный ключ применяется в системах, невоспринимающих последовательность "#!" в начале скрипта для указания интерпретатора. -T
Режим проверки "дыр" в защите. Обычно это нужно для программ, работающих в режиме повышенной привилегии (setuid, setguid). Желательно для CGI скриптов. -u
Принудительный дамп памяти после компиляции скрипта. Этот дамп можно потом использовать для создания исполняемого файла с помощью программы undump. -U
Разрешение выполнять опасные операции. Например, стереть директорию или выполнять явно не закрытую программу. -v
Вывод номера версии Perl. -w
Вывод имен переменных, используемых только один раз, имен скаляров, используемых до их определения, имен переопределяемых подпрограмм, ссылок на неопределенные указатели файлов, попыток записи в файлы, открытых только на "чтение", употребление некорректных записей чисел, использование массивов как скаляров, рекурсия более 100 уровней. -x директория
Режим запуска скрипта, вставленного в файл, содержащий обычный текст. Началом скрипта считается строка с символами '#!' в начале и содержащая слово perl. Концом - строка с '__END__' Указанная директория становится текущей в момент исполнения. Если необходимо читать последующие строки, то это лучше делать через указатель файла DATA.