Учебник по Perl
Данный справочник создан на основе материалов, находящихся на сайте Справочник Web-языков www.spravkaweb.ruДата создания справочника: 20.08.2004
Если Вы нашли ошибки в справочнике, или у Вас есть предложения по его улучшению, прошу писать на майл.
Скачать обновленный справочник можно отсюда
Содержание:
Функции обработки строк и скаляров
chompУдаляет из каждого строкового элемента списка замыкающий символ завершения записи, соответствующий значению переменной $/ (по умолчанию - символ новой строки "\n"). Возвращает общее количество удаленных символов. Список может состоять из одной переменной.
chomp СПИСОК chomp (эквивалентно chmod $_)
chop
Удаляет из каждого строкового элемента списка последний символ. Возвращаемое значение - удаленный символ из последнего элемента списка. Сисок может состоять из одной переменной.
chop СПИСОК chop (эквивалентно chop $_)
chr
Возвращает символ, код которого представлен числовым параметром.
chr ЧИСЛО chr (эквивалентно chr $_)
crypt
Шифрует ТЕКСТ с использованием заданного в параметре шифра. Обратной функции дешифровки не существует.
crypt ТЕКСТ, ШИФР
hex
Интерпретирует строковое ВЫРАЖЕНИЕ как шестнадцатиричное число и вычисляет его десятичный эквивалент.
hex ВЫРАЖЕНИЕ hex (эквивалентно hex $_)
index
Возвращает позицию первого вхождения указанной подстроки в заданную строку или -1, если подстрока не найдена. Если задан параметр ПОЗИЦИЯ, то поиск подстроки осуществляется, начиная с заданной позиции в строке (0 - начало строки)
index СТРОКА, ПОДСТРОКА[, ПОЗИЦИЯ]
lc
Преобразует все прописные буквы строкового параметра ВЫРАЖЕНИЕ в строчные и возвращает полученную строку. Использует текущие установки локализации, если используется use local.
lc ВЫРАЖЕНИЕ lc (эквивалентно lc $_)
lcfirst
Преобразует первый символ строкового параметра ВЫРАЖЕНИЕ в нижний регистр и возвращает полученную строку. Использует текущие установки локализации, если используется use local.
lcfirst ВЫРАЖЕНИЕ lcfirst (эквивалентно lcfirst $_)
length
Возвращает количество байтов в строке, являющейся значением параметра ВЫРАЖЕНИЕ.
length ВЫРАЖЕНИЕ length (эквивалентно length $_)
oct
Интерпретирует строковое ВЫРАЖЕНИЕ как восьмеричное число и вычисляет его десятичный эквивалент. Если строка начинается с символов "0x", то ее содержимое интерпретируется как шестнадцатиричное число.
oct ВЫРАЖЕНИЕ oct (эквивалентно oct $_)
ord
Возвращает числовой ASCII-код первого символа строки, являющейся значением параметра ВЫРАЖЕНИЕ.
ord ВЫРАЖЕНИЕ ord (эквивалентно ord $_)
pack
Упаковывает массив или список значений в двоичную структуру в соответствии с заданным шаблоном, представляющим собой последовательность символов, которые задают порядок и тип значений. Возвращает строку, содержащую полученную структуру.
pack ШАБЛОН, СПИСОК
reverse
В списковом контексте возвращает список значений, состоящих из элементов заданного параметром СПИСОК списка; в скалярном контексте соединяет все элементы списка в одну строку и возвращает строку, состоящую из символов полученной строки, но в обратном порядке.
reverse СПИСОК
rindex
- Синтаксис :
- rindex STR, SUBSTR, POSITION
- rindex STR, SUBSTR, POSITION
- Находит последнее, ограниченное справа позицией POSITION, вхождение подстроки SUBSTR
в строку STR, и возвращает найденную позицию. Если подстрока SUBSTR не найдена,
возвращается значение $[ -1.
- Пример :
#!/bin/perl $STR = "Этот безумный, безумный, безумный, безумный мир!"; $SUBSTR = "безумный"; $POS = 7; print "Индекс первого символа строки по умолчанию равен $[\n"; print "Позиция первого вхождения подстроки '$SUBSTR' в строку '$STR' = ",index($STR, $SUBSTR), "\n"; print "Позиция первого после позиции $POS вхождения подстроки '$SUBSTR' в строку '$STR' = ",index($STR, $SUBSTR, $POS), "\n"; print "Позиция последнего вхождения подстроки '$SUBSTR' в строку '$STR' = ",rindex($STR, $SUBSTR), "\n"; print "Позиция последнего перед позицией $POS вхождения подстроки '$SUBSTR' в строку '$STR' = ",rindex($STR, $SUBSTR, $POS), "\n"; $[=2; print "\nИндех первого символа строки по умолчанию изменен на $[\n"; print "Позиция первого вхождения подстроки '$SUBSTR' в строку '$STR' = ",index($STR, $SUBSTR), "\n"; print "Позиция первого после позиции $POS вхождения подстроки '$SUBSTR' в строку '$STR' = ",index($STR, $SUBSTR, $POS), "\n"; print "Позиция последнего вхождения подстроки '$SUBSTR' в строку '$STR' = ",rindex($STR, $SUBSTR), "\n"; print "Позиция последнего перед позицией $POS вхождения подстроки '$SUBSTR' в строку '$STR' = ",rindex($STR, $SUBSTR, $POS), "\n";
- В результате выполнения скрипта будут выведены следующие строки :
Индекс первого символа строки по умолчанию равен 0 Позиция первого вхождения подстроки 'безумный' в строрку 'Этот безумный, безумный, безумный, безумный мир!' = 5 Позиция первого после позиции 7 вхождения подстроки 'безумный' в строку 'Этот безумный, безумный, безумный, безумный мир!' = 15 Позиция последнего вхождения подстроки 'безумный' в строрку 'Этот безумный, безумный, безумный, безумный мир!' = 35 Позиция последнего перед позицией 7 вхождения подстроки 'безумный' в строку 'Этот безумный, безумный, безумный, безумный мир!' = 5 Индекс первого символа строки по умолчанию изменен на 2 Позиция первого вхождения подстроки 'безумный' в строрку 'Этот безумный, безумный, безумный, безумный мир!' = 7 Позиция первого после позиции 7 вхождения подстроки 'безумный' в строку 'Этот безумный, безумный, безумный, безумный мир!' = 7 Позиция последнего вхождения подстроки 'безумный' в строрку 'Этот безумный, безумный, безумный, безумный мир!' = 37 Позиция последнего перед позицией 7 вхождения подстроки 'безумный' в строку 'Этот безумный, безумный, безумный, безумный мир!' = 7
sprintf
Возвращает строку, представляющую форматный вывод списка значений определяемого параметра СПИСОК, в соответствии с заданной первым параметром ФОРМАТ строкой формата. Символы форматирования соответствуют аналогичной функции в языке C.
sprintf ФОРМАТ, СПИСОК
substr
Извлекает из строки, заданной параметром СТРОКА, подстроку длиной равной значению параметра ДЛИНА, начиная с символа, заданного параметром СМЕЩЕНИЕ. Если СМЕЩЕНИЕ отрицательно, то извлечение начинается с последнего символа строки. Если значение параметра ДЛИНА отрицательно, то от конца строки отсекается количество символов, равное абсолютному значению этого параметра. Если задана строка ЗАМЕЩЕНИЕ, то выделенная подстрока замещается ею в параметре СТРОКА, которы в этом случае должен быть lvalue.
substr СТРОКА, СМЕЩЕНИЕ [, ДЛИНА[, ЗАМЕЩЕНИЕ]]
uc
Преобразаут все строчные буквы строкового параметра ВЫРАЖЕНИЕ в прописные и возвращает полученную строку. Использует текущие установки локализации, если используется use local.
uc ВЫРАЖЕНИЕ uc (эквивалентно uc $_)
ucfirst
Преобразует первый символ строкового параметра ВЫРАЖЕНИЕ в верхний регистр и возвращает полученную строку. Использует текущие установки локализации, если используется use local.
ucfirst ВЫРАЖЕНИЕ ucfirst (эквивалентно ucfirst $_)
Функции, связанные с регулярными выражениями
pos- Синтаксис:
- pos [$SCALAR]
- Функция pos() возвращает позицию, в которой завершился последний глобальный
поиск $SCALAR=~m/.../g, осуществленный в строке, задаваемой переменной $SCALAR. Возвращаемое
значение равно числу length($`) + length($&). Следующий глобальный поиск m/.../g в данной
строке начнется именно с этой позиции.
- Если аргумент $SCALAR отсутствует, возвращается позиция завершения последнего глобального поиска, осуществленного в строке $_.
- Пример:
- Если аргумент $SCALAR отсутствует, возвращается позиция завершения последнего глобального поиска, осуществленного в строке $_.
$words = "one two three four"; while ($words =~m/\w+/g) { print "pos=",pos($words)," length(\$`)=",length($`), " length(\$&)=",length($&),"\n"; }
- В результате выполнения данного скрипта будут выделены номера позиций, соответствующих
окончаниям слов в строке $words:
pos=3 length($`)=0 length($&)=3 pos=7 length($`)=4 length($&)=3 pos=13 length($`)=8 length($&)=5 pos=18 length($`)=14 length($&)=4
- функцию pos() можно использовать в левой части операции присваивания для изменения начальной позиции следующего поиска:
# изменение начальной позиции для последующего поиска $words = "one two three four"; pos $words = 4; while ($words =~m/\w+/g) { print pos $words, "\n"; }
- Здесь поиск слов начнется со второго слова, и будут выделены номера позиций 7, 13 и 18.
quotemeta
Возвращает строку, в которой перед каждым не алфавитно-цифровым символом поставлена обратная косая черта. Значение параметра ВЫРАЖЕНИЕ интерпретируется как строка. (Внутренняя функция реализации управляющего символа \Q в строках в двойных кавычках.)
quotemeta ВЫРАЖЕНИЕ quotemeta (эквивалентно quotemeta $_)Например, в результате выполнения
print quotemeta "*****", "\n";
будет выведена строка
\*\*\*\*\*
split
- Синтаксис:
- split [/PATTERN/[, EXPR[, LIMIT]]]
- Разбивает строку EXPR на отдельные строки, используя в качестве разделителя образец, задаваемый
регулярным выражением PATTERN. В списковом контексте возвращает массив полученных строк, в скалярном
контексте - их число. Если функция split() вызывается в скалярном контексте, выделяемые строки
помещаются предопределенный массив @_. Об этом не следует забывать,
так как массив @_ обычно используется для передачи параметров
в подпрограмму, и обращение к функции split() неявно в скалярном контексте эти параметры уничтожит.
- Если присутствует параметр LIMIT, то он задает максимальное количество строк, на которое может быть разбита исходная строка. Отрицательное значение параметра LIMIT трактуется как произвольно большое положительное число.
- Если параметр EXPR опущен, разбивается строка $_. Если отсутствует также параметр PATTERN, то в качестве разделителя полей используются пробельные символы после пропуска всех начальных пробельных символов (что соответствует заданию образца в виде /\s+). К пробельным символам относится пробел (space), символ табуляции (tab), возврат каретки (carriage return), символ перевода строки (line feed) и символ перевода страницы (form feed).
- Если присутствует параметр LIMIT, то он задает максимальное количество строк, на которое может быть разбита исходная строка. Отрицательное значение параметра LIMIT трактуется как произвольно большое положительное число.
- Предопределенная глобальная переменная $_ служит для обозначения
используемой по умолчанию области ввода и поиска по образцу. Обычно мы осуществляем ввод при
помощи операции "<>"("ромб"). Внутри угловых скобок <> может
стоять дескриптор файла ввода, например, <STDIN>. Если дескриптор
файла отсутствует, то в качестве файлов ввода используются файлы, переданные программе Perl в
качестве аргументов командной строки.
- Пусть, например, программа содержится в файле script.pl:
#! /usr/bin/perl while (<>) { print; };
- Программа вызвана следующим образом:
- script.pl file1 file2 file3
- Тогда операция <> будет считывать строки сначала из файла file1, затем из файла file2 и, наконец, из файла file3. Если в командной строке файлы не указаны, то в качестве файла ввода будет использован стандартный ввод.
- Только в случае, когда условное выражение оператора while состоит из единственной операции "ромб", вводимое значение автоматически присваивается предопределенной переменной $_. Вот что означают слова о том, что переменная $_ применяется для обозначения используемой по умолчанию области ввода. Аналогично обстоит дело с поиском по образцу.
- Пусть, например, программа содержится в файле script.pl:
- Пример использования функции split():
#!/usr/bin/perl while (<>) { chop; print "Число полей во входной строке '$_' равно ", $n=split; print "\nВходная строка разбита на строки:\n"; foreach $i (@_) { print $i . "\n"; } print "Объединение списка строк в одну строку через '+':\n"; $joined = join "+", @_; print "$joined\n"; }
- В результате применения операции ввода <> внутри условного выражения оператора while
вводимая строка будет присвоена переменной $_. Функция chop()
без параметров применяется к переменной $_. В операции print
вторым операндом является выражение $n=split, в котором функция split
вызывается в скалярном контексте и без параметров. Поэтому она применяется по умолчанию к переменной
$_. В качестве разделителя полей по умолчанию используется множество
пробельных символов, а результат помещается в массив @_. А затем к
массиву @_ применяется функция join(),
объединяющая строки-элементы массива в одну строку.
- Если ввести строку "one two three", то вывод будет иметь вид:
- one two three
- Число полей во входной строке 'one two three' равно 3
- Входная строка разбита на строки:
- one
- two
- three
- Объединение списка строк в одну строку через '+':
- one+two+three
- one two three
study
Оптимизирует строковые данные переметра СТРОКА для дальнейшего использования в повторных операциях поиска по образцу. В цикле с несколькими опрерациями поиска может сэкономить время выполнения.
study ВЫРАЖЕНИЕ study (эквивалентно study $_)
Числовые функции
absВычисление абсолютного значения выражения.
abs ВЫРАЖЕНИЕ abs (эквивалентно abs $_)
atan2
Вычисление arctg(X/Y).
atan2 X, Y
cos
Вычисление функции cos (ВЫРАЖЕНИЕ), выражение в радианах.
cos ВЫРАЖЕНИЕ cos (эквивалентно cos $_)
exp
Вычисление значения экспоненциальной функции eВЫРАЖЕНИЕ.
exp ВЫРАЖЕНИЕ exp (эквивалентно exp $_)
hex
Интерпретирует строковое ВЫРАЖЕНИЕ как шестнадцатиричное число и вычисляет его десятичный эквивалент.
hex ВЫРАЖЕНИЕ hex (эквивалентно hex $_)
int
Вычисление целой части числа (отбрасывается дробная часть).
int ВЫРАЖЕНИЕ int (эквивалентно int $_)
log
Вычисляет натуральный логарифм числа (по основанию e).
log ВЫРАЖЕНИЕ log (эквивалентно log $_)
oct
Интерпретирует строковое ВЫРАЖЕНИЕ как восьмеричное число и вычисляет его десятичный эквивалент. Если строка начинается с символов "0x", то ее содержимое интерпретируется как шестнадцатиричное число.
oct ВЫРАЖЕНИЕ oct (эквивалентно oct $_)
rand
Возвращает случайное дробное число в интервале 0 до значения параметра ВЫРАЖЕНИЕ.
rand ВЫРАЖЕНИЕ rand (эквивалентно rand 1)
sin
Вычисление функции sin(ВЫРАЖЕНИЕ), выраженное в радианах.
sin ВЫРАЖЕНИЕ sin (эквивалентно sin $_)
sqrt
Вычисляет квадратный корень числа.
sqrt ВЫРАЖЕНИЕ sqrt (эквивалентно $_)
srand
Затравка перед первым вызовом rand() (в Perl 5.005 и выше вызывается автоматически при обращении к rand).
srand ВЫРАЖЕНИЕ srand
Функции обработки массивов скаляров
popУдаляет из массива скаляров последний элемент и возвращает его значение. Если массив пустой, то возвращает неопределенное значение undef.
pop МАССИВ pop (в основной программе эквивалентно pop @ARGV) pop (в подпрограмме эквивалентно pop @_)
push
Рассматривает массив, заданный параметром МАССИВ, как стек и добавляет в конец массива элементы списка, определяемого параметром СПИСОК. Возвращает новое количество элементов полученного массива.
push МАССИВ, СПИСОК
shift
Удаляет из массива скаляров первый элемент и возвращает его значение. После удаления элемента оставшиеся сдвигаются влево: второй становится первым, третий вторым и т.д. Если массив пустой, то возвращает неопределенное значение undef.
shift МАССИВ shift (в основной программе эквивалентно shift @ARGV, в подпрограмме эквивалентно shift @_)
splice
Удаляет из массива заданное КОЛИЧЕСТВО элементов, начиная с элемента, определенного параметром НОМЕР. В случае задания параметра СПИСОК заменяет указанные элементы элемента списка. В списковом контексте возвращает удаленные элементы; в скалярном контексте - последний удаленный элемент. Если параметр КОЛИЧЕСТВО не задан, то удаляются все элементы после элемента с номером, определенным параметром НОМЕР.
splice МАССИВ, НОМЕР[, КОЛИЧЕСТВО[, СПИСОК]]
unshift
Добавляет элементы списка, определенного параметром СПИСОК, в начало массива, заданного параметром МАССИВ. Выполняет действия, противоположные действиям функции shift.
unshift МАССИВ, СПИСОК
Функции обработки списков
grepВычисляет блок операторов БЛОК или ВЫРАЖЕНИЕ для всех элементов списка, заданного параметром СПИСОК, локально устанавливая значение специальной переменной <>$_ равным значению элемента списка. В списковом контексте возвращается список элементов, для которых ВЫРАЖЕНИЕ вычисляется равным Истина. В скалярном контексте - количество раз, когда ВЫРАЖЕНИЕ вычислялось равным Истина.
grep БЛОК СПИСОК grep ВЫРАЖЕНИЕ, СПИСОК
join
Соединяет отдельные строковые элементы списка параметра СПИСОК в одну строку, вставляя между ними разделитель, равный значению параметра ВЫРАЖЕНИЕ и возвращает полученную строку.
join ВЫРАЖЕНИЕ, СПИСОК
map
Вычисляет блок операторов БЛОК или ВЫРАЖЕНИЕ для всех элементов списка, заданного параметром СПИСОК, локально устанавливая значение специальной переменной $_ равным значению элемента списка. Возвращает список элементов, составленный из результатов указанных вычислений для каждого элемента заданного списка. Операторы из БЛОК и ВЫРАЖЕНИЕ вычисляются в списковом контексте.
map БЛОК СПИСОК map ВЫРАЖЕНИЕ, СПИСОК
reverse
В списковом контексте возвращает список значений элементов заданного параметром СПИСОК списка в обратном порядке. В скалярном контексте соединяет все элементы списка в одну строку и возвращает строку, в которой символы расположены в обратном порядке.
reverse СПИСОК
sort
Сортирует список значений, определенный параметром СПИСОК. Если параметры БЛОК или ПОДПРОГРАММА не заданы, то используется стандартная процедура сравнения строковых данных; если заданы, то операторы блока или подпрограмма используются в качестве процедуры сравнения при сортировки элементов списка. Возвращает отсортированный список значений исходного списка.
sort [ПОДПРОГРАММА] СПИСОК sort [БЛОК] СПИСОК
unpack
Выполняет обратные действия относительно действий функции pack(): берет строку (параметр ВЫРАЖЕНИЕ), представляющую двоичную структуру упакованного массива или списка значений, и распаковывает ее в соответствии с заданным параметром ШАБЛОН шаблоном. В списковом контексте возвращает массив полученных значений, в скалярном - значение первого полученного элемента массива. Шаблон должен быть такой же, как и в функции pack().
unpack ШАБЛОН, ВЫРАЖЕНИЕ
Функции обработки хеш-массивов
deleteУдаляет из хеш-массива ключ и ассоциированное с ним значение. Ключ можно задавать как вычисляемое значение выражения. Возвращет значение, ассоциированное с удаленным ключом, или неопределенное значение, если заданного ключа в хеш-массиве не существует.
delete ВЫРАЖЕНИЕ
each
Возвращет следующую пару ключ/значение из хеш-массива, определенного параметром ХЕШ. Можно использовать в цикле для организации чтения хеша. В списковом контексте возвращает пару ключ/значение в виде двухэлементного списка, в скалярном контексте - только ключ. Если перебраны все элементы хеша, то в списковом контексте возвращает пустой список, а в скалярном контексте - неопределенное значение undef; следующий вызов функции each() начинает новый итерационный процесс.
each ХЕШ
exists
Проверяет, существует ли в хеш-массиве заданный ключ. Если существует, то возвращает булево значение Истина, иначе - Ложь. Параметр может быть выражением, возвращающим ссылку на элемент хеша с заданным ключом, например, $hash{$key}.
exists ВЫРАЖЕНИЕ
keys
В списковом контексте возвращает список, элементами которого являются все ключи хеш-массива, заданного параметром ХЕШ; в скалярном контексте возвращает количество ключей хеш-массива.
keys ХЕШ
values
В списковом контексте возвращает список, элементами которого являются все значения хеш-массива, заданного параметром ХЕШ; в скалярном контексте возвращает количество значений хеш-массива.
values ХЕШ
Функции ввода/вывода
binmodeПодготавливает файл, ассоциированный с дескриптом ДЕСКРИПТОР, для чтения и записи в двоичном формате, а не в текстовом, в операционных системах, которые различают двоичные и текстовые файлы. В Unix эта функция не имеет никакого эффекта; необходима в MS-DOS и других архаичных системах, иначе двоичный файл может быть испорчен.
binmode ДЕСКРИПТОР
dbmclose
Разрывает связывание хеш-массива и файлом базы DBM. Заменена функцией untie().
dbmclose ХЕШ
dbmopen
Создает связывание хеш-массива с файлом базы DBM, имя которого определяется значением параметра ФАЙЛ_DB. Заменена функцией tie(). Файл базы данных открывается в режиме, указанном параметром РЕЖИМ.
dbmopen ХЕШ, ФАЙЛ_DB, РЕЖИМ
die
Вне тела функции eval() выводит значения элементов списков, заданного параметром СПИСОК, в стандартный файл ошибок STDERR и завершает выполнение сценария Perl с текущим значением специальной переменной $!.
Если используется в теле функции eval(), то сообщение об ошибке помещается в переменную $@ и функция eval() завершается с неопределенным значением. Такое поведение позволяет использовать функцию die() для генерирования исключительных состояний.
die СПИСОКПрименяется также в функциях, относящихся к управлению выполнением программ.
eof
Тестирует файл, ассоциированный с дескриптом, заданным параметром ДЕСКРИПТОР, на конец файла. Возвращает 1, если следующая операция чтения из файла возвратит конец файла. Употребленная без параметра, использует в качестве параметра файл, для которого выполнялась последняя операция чтения. Если используется с пустыми скобками eof(), то тестирует символ конца самого последнего файла из списка файлов, переданных в сценарий через командную строку.
eof ДЕСКРИПТОР eof () eof
fileno
Возвращает числовой системный дескриптор для файла, ассоциированного с дескриптором, заданным параметром ДЕСКРИПТОР.
fileno ДЕСКРИПТОР
flock
Блокирует файл, ассоциированный с дескриптором, заданным параметром ДЕСКРИПТОР, для выполнения другими пользователями операций, определенных параметром ОПЕРАЦИЯ. Возвращает булево значение Истина в случае успешной блокировки файла и Ложь в противном случае. Блокирует полностью весь файл, а не отдельные записи.
flock ДЕСКРИПТОР, ОПЕРАЦИЯ
format
Объявляет формат, используемый для вывода функцией write().
format ИМЯ_ФОРМАТА = ФОРМАТЫ_СТРОКПараметр ИМЯ_ФОМАТА представляет правильный идентификатор Perl. Он должен в точности соответствовать имени дескриптора файла, который используется в качестве единственного параметра в функции вывода write().
Так как операция format не является вычисляемой операцией Perl, то объявление формата может осуществляться в любом месте программы. Обычно все объявления форматов задаются либо в начале, либо в конце программы.
getc
- Функция getc возвращает символ в текущей позиции файла, дескриптор которого передан ей
в качестве параметра, или неопределенное значение в случае достижения конца файла или возникновения
ошибки. Если функция вызывается без параметра, то она читает символ из стандартного файла вывода
STDIN.
getc; # Чтение символа из STDIN getc F1; # чтение символа в текущей позиции файла с дескриптором F1
- Синтаксис:
- print ДЕСКРИПТОР СПИСОК;
- print ДЕСКРИПТОР СПИСОК;
- Здесь ДЕСКРИПТОР представляет дескриптор файла, в который функция выводит строковые
данные, представленные списком вывода СПИСОК. Он может состоять из переменных, элементов
массивов и выражений, вычисляемых как строковые данные. Дескриптор файла создается функцией
open(). Он может быть опущен, и в этом случае вывод осуществляется
в стандартный файл вывода STDOUT, если только функцией
select() не выбран другой файл вывода по умолчанию. Обычное
стандартное устройство вывода - экран монитора компьютера.
- Функция print при выводе своего списка не завервает его символом новой строки "\n". Это означает, что следующая функция print начнет вывод на экран непосредственно после последнего выведенного предыдущей функцией print символа. Если такое поведение не желательно, то следует список вывода каждой функции print явно завершать строкой, содержащей символ новой строки, или включать его последним символом последнего элемента списка вывода.
- Функция print при выводе своего списка не завервает его символом новой строки "\n". Это означает, что следующая функция print начнет вывод на экран непосредственно после последнего выведенного предыдущей функцией print символа. Если такое поведение не желательно, то следует список вывода каждой функции print явно завершать строкой, содержащей символ новой строки, или включать его последним символом последнего элемента списка вывода.
- Пример 1:
#! perl -w print "Строка 1:"; print "Строка 2:\n"; print "Строка 3:","\n"; print STDOUT "Строка 4:\n";
- Вот что получится на экране :
Строка 1:Строка 2: Строка 3: Строка 4:
- Вторая функция print начинает свой вывод на той же строке, на которой завершила вывод
первая функция, в которой в списке вывода нет символа перехода на новую строку. В четвертой
функции явно указан дескриптор стандартного файла вывода STDOUT.
- Функция print, как и большинство других функций, является списковой операцией, и все элементы списка вывода вычисляются в списковом контексте. Это обстоятельство следует учитывать при использовании в качестве элементов списка вывода выражений с вызовами подпрограмм.
- Если параметры функции print, включая дескриптор файла, заключены в круглые скобки, то такая синтаксическая конструкция считается термом и в выражении имеет наивычший приоритет вычисления.
- Пример 2:
- Функция print, как и большинство других функций, является списковой операцией, и все элементы списка вывода вычисляются в списковом контексте. Это обстоятельство следует учитывать при использовании в качестве элементов списка вывода выражений с вызовами подпрограмм.
- print ($m + $n) **2;
- Будет напечатана сумма значений переменных $m и $n, а не их сумму, возведенную в квадрат.
Компилятор Perl, обнаружив после лексемы print левую круглую скобку, найдет правую
круглую скобку и будет рассматривать их содержимое как список параметров функции print.
А так как такая констркция есть терм, то сначало будет выполнена операция печати суммы значений
переменных, а потом результат этой операции (Истина = 1) будет возведен в квадрат. Добавление
необязательного дескриптора стандартного файла вывода STDOUT
исправит подобную ошибку :
- Пример 3:
- print STDOUT ($m + $n) ** 2; # Выведет ($m + $n) ** 2
- Если в функции печати print не задан список вывода, то она по умолчанию выводит
содержимое специальной переменной $_ в файл, определенный параметром
ДЕСКРИПТОР.
- Пример 4:
print; # Выводится содержимое переменной $_ на экран монитора print STDOUT; # Эквивалентен предыдущему оператору print FILEOUT; # Выводится содержимое переменной $_ в файл # с дескриптором FILEOUT
- Пример 4:
printf
Выводит форматированный список строковых данных в файл, ассоциированный с дескриптом, заданный параметром ДЕСКРИПТОР. Если этот параметр опущен, то вывод осуществляется в стандартный файл вывода STDIN или текущий файл, установленный функцией select(). Параметр ФОРМАТ представляет строку, содержащую символы форматирования, полностью совпадающие с символами форматирования системной функцией Unix printf(3).
printf ДЕСКРИПТОР ФОРМАТ, СПИСОК printf ФОРМАТ, СПИСОК
read
- Синтаксис:
- read ДЕСКРИПТОР, ПЕРЕМЕННАЯ, ДЛИНА [,СМЕЩЕНИЕ];
- Читает количество байтов, определенное значением параметра ДЛИНА, в скалярную переменную,
определяемую параметром ПЕРЕМЕННАЯ, из файла с дескриптором, заданным первым параметром ДЕСКРИПТОР.
- Возвращаемое значение - действительное количество прочитанных байтов, 0 при попытке чтения в позиции конца файла и неопределенное значение в случае возникновения ошибки.
- Параметр СМЕЩЕНИЕ определяет количество сохраняемых байтов из содержимого переменной ПЕРЕМЕННАЯ, т.е. запись прочитанных из файла данных будет добавлена к содержимому переменной после байта, определяемого значением параметра СМЕЩЕНИЕ.
- Отрицательное значение смещения -n (n - целое число) означает, что из содержимого переменной ПЕРЕМЕННАЯ отбрасываются последние n байтов и к оставшейся строке добавляется запись, прочитанная из файла.
- Пример :
- Предположим, что файл in.dat содержит три строки данных:
- Возвращаемое значение - действительное количество прочитанных байтов, 0 при попытке чтения в позиции конца файла и неопределенное значение в случае возникновения ошибки.
- One
- Two
- Three
#! perl -w open (F1, "in.dat") or die "Ошибка открытия файла: $!"; $string = "1234567890" read F1, $string, 6; # Чтение шести байт в переменную без смещения print $string,"\n"; # $string = "One\nTw" read F1, $string, 6, length($string); print $string,"\n"; # $string = "One\nTwo\nThre"
- Two
readdir
В скалярном контексте читает следующее имя элемента каталога, ассоциированного с дескриптором каталога (параметр ДЕСКРИПТОР) функцией opendir(). В списковом контексте возвращает имена всех оставшихся элементов (файлов и каталогов). Если больше не осталось прочитанных элементов, возвращает неопределенное значение в скалярном контексте и пустой список в списковом контексте.
readdir ДЕСКРИПТОР
rewinddir
Устанавливает текущую позицию каталога, ассоциированного с дескриптором ДЕСКРИПТОР, на начало.
rewinddir ДЕСКРИПТОР
seek
- Синтаксис :
- seek ДЕСКРИПТОР, СМЕЩЕНИЕ, ТОЧКА_ОТСЧЕТА
- Текущая позиция в файле автоматически изменяется в соответствии с выполненными операциями
чтения/записи. Ее можно изменить с помощью функции seek(), которой передаются в качестве
параметров дескриптор файла, смещение и точка отсчета. Для связанного с дескриптором файла
устанавливается новая текущая позиция, смещенная на заданное параметром СМЕЩЕНИЕ число байт
относительно точки отсчета.
- Параметр ТОЧКА_ОТСЧЕТА может принимать одно из трех значений:
- 0 - начало файла
- 1 - текущая позиция
- 2 - конец файла
- 1 - текущая позиция
- Смещение может быть как положительным, так и отрицательным.
- Обычно оно отрицательно для смещения относительно конца файла и положительно для смещения относительно начала файла.
- Для задания точки отсчета можно воспользоваться константами SEEK_SET,SEEk_CUP и SEEK_END из модуля IO::Seekable, которые соответствуют началу файла, текущей позиции и концу файла.
- Естественно, необходимо подключить этот модуль к программе с помощью ключевого слова use.
- Например, следующие операторы устанавливают одинаковые текущие позиции в файлах:
- Обычно оно отрицательно для смещения относительно конца файла и положительно для смещения относительно начала файла.
- use IO::Seekable;
- seek FILE1, 5, 0;
- seek FILE2, 5, SEEK_SET;
- seek FILE1, 5, 0;
- Для перехода в начало или конец файла следует использовать нулевое смещение относительно соответствующих точек отсчета при обращении к функции seek():
seek FILE1, 0, 0; # Переход в начало файла seek FILE1, 0, 2; # Переход в конец файла
seekdir
Устанавливает текущую позицию каталога, ассоциированного со своим дескриптором (параметр ДЕСКРИПТОР), для функции readdir(). Параметр ПОЛОЖЕНИЕ должен быть значением, возвращаемым функцией telldir.
seekdir ДЕСКРИПТОР, ПОЛОЖЕНИЕ
select
ВОзвращает дескриптор текущего установленного файла вывода. Если задан параметр ДЕСКРИПТОР, делает файл, ассоциированный с этим дескриптором текущим установленным файлом вывода. Это приводит к тому, что функции print() и write() без дескрипторов будут осуществлять вывод именно в этот файл.
select [ДЕСКРИПТОР]
syscall
Осуществляет вызов системной команды, заданной первым элементом передаваемого функции списка ( параметр СПИСОК); остальные элементы списка передаются этой команде в качестве параметров. В случае не успешного выполнения системной команды, возвращает -1 и в переменной $! содержится информация об ошибке.
syscall СПИСОК
sysread
Аналогична функции read(), за исключением того, что осуществляет не буферизованный ввод данных, не используя буферы стандартной системы ввода/вывода stdio.
sysread ДЕСКРИПТОР, СКАЛЯР, КОЛИЧЕСТВО[, СМЕЩЕНИЕ]
syswrite
Запись заданного количества байт из скалярной переменной, определяемой параметром СКАЛЯР, в файл, ассоциированный с заданным параметром ДЕСКРИПТОР дескриптором. Возвращает истинное количество прочитанных байтов или неопределенное значение undef привозникновении ошибки. Параметр СМЕЩЕНИЕ задает позицию в строковой переменной СКАЛЯР, с которой записываются в файл данные (по умолчанию с начала строки данных скалярной переменной); отрицательное значение этого параметра определяет запись заданного количества байт, начиная с конца строки. Осуществляет не буферизованный вывод данных, не используя буферы стандартной системы ввода/вывода stdio.
syswrite ДЕСКРИПТОР, СКАЛЯР, КОЛИЧЕСТВО[, СМЕЩЕНИЕ]
tell
Возвращает текущую позицию в файле, ассоциированным с заданным параметром ДЕСКРИПТОР дескриптором. Если параметр опущен, то подразумевается последний файл, для которого была выполнена операция чтения данных.
tell [ДЕСКРИПТОР]
telldir
Возвращает текущую позицию в каталоге, ассоциированного с заданным параметром ДЕСКРИПТОР дескриптором.
telldir ДЕСКРИПТОР
truncate
- Синтаксис :
- truncate ДЕСКРИПТОР, ДЛИНА;
- truncate ИМЯ_ФАЙЛА, ДЛИНА;
- truncate ИМЯ_ФАЙЛА, ДЛИНА;
- Функция truncate() усекает файл до заданной длины. Для задания файла можно использовать
как имя файла, так и дескриптор открытого файла.
- Функция возвращает значение Истина, если длина файла успешно усечена до количества байт, определенных в параметре ДЛИНА, или неопределенное значение undef в противном случае.
- Под усечением файла понимается не только уменьшение его длины, но и увеличение. Это означает, что значение второго параметра функции truncate() может быть больше истинной длины файла, что позволяет делать "дыры" в содержимом файла, которые в дальнейшем можно использовать для записи необходимой информации, не уничтожая уже записанную в файл.
- Пример (Файл с "дырами"):
- Функция возвращает значение Истина, если длина файла успешно усечена до количества байт, определенных в параметре ДЛИНА, или неопределенное значение undef в противном случае.
#! perl -w # Создание файла с "дырами" for ($i=1;$i<=3;$i++) { open (F, ">>>out.dat") or die $!; print F "Запись".$i; close F; open (F, ">>out.dat") or die $!; truncate F, 19*$i; close F; } # Запись информации в "дыры" open (F, "+<out.dat") or die $!; for ($i=1;$i<=3;$i++) { seek F,0,1; read F,$recl,7; seek F,0,1; print F "<CONTENTS:".$i.">" } close F;
- На каждом шаге первого цикла for в конец файла out.dat записывается информация длиной 7 байтов,
а потом его длина увеличивается на 12 байтов, образуя пустое пространство в файле. Следующий
цикл for заносит в эти созданные "дыры" информацию длиной 12 байтов, не затирая
хранящуюся в файле информацию.
- Для изменения длины файла функцией truncate приходится закрывать его и снова открывать. Это связано с тем обстоятельством, что функция truncate() добавляет пустое пространство в начало файла, сдвигая в конец его содержимое, если применять ее, не закрывая файл.
- После выполнения первого цикла for содержимое файла out.dat выглядит так:
- Для изменения длины файла функцией truncate приходится закрывать его и снова открывать. Это связано с тем обстоятельством, что функция truncate() добавляет пустое пространство в начало файла, сдвигая в конец его содержимое, если применять ее, не закрывая файл.
Запись1 Запись2 Запись3
- По завершении всей программы файл будет содержать следуюшую строку:
- Запись1<CONTENTS:1>Запись2<CONTENTS:2>Запись3<CONTENTS:3>
warn
Выводит в стандартный файл ошибок STDERR значения элементов списка, определяемого параметром СПИСОК. Если он пуст, то выводит содержимое специальной переменной $@ (обычно после выполнения функции eval), добавляя строку "\t...caught", а если и она пуста, то выводит сообщение "Warning: Something-s wrong"
warn СПИСОК
write
Осуществляет форматный вывод в файл, Ассоциированный с заданным параметром ДЕСКРИПТОР дескриптором, в соответствии с определенным форматом. Если параметр не задан, то выводит в стандартный файл вывода STDOUT или в файл, выбранный функцией select().
write [ДЕСКРИПТОР]
Функции для работы с файлами и каталогами
-X- В Perl предусмотрен набор унарных операций, возвращающих значение только одного поля структуры
индексного дескриптора. Эти операции в документации называются "операциями -X", так
как их названия состоят из дефиса с последующим единственным символом. Все они являются унарными
именованными операциями и имеют свой приоритет в сложных выражениях.
Полный перечень унарных операций проверки файлов -r Файл может читаться эффективным uid/gid -w Записывать в файл может эффективный uid/gid -x Файл может выполняться эффективным uid/gid -o Владельцем файла является эффективный uid/gid -R Файл может читаться действительным uid/gid -W Записывать в файл может действительный uid/gid -X Файл может выполняться действительным uid/gid -O Владельцем файла является действительный uid/gid -e Файл существует -z Размер файла равен нулю -s Размер файла отличен от нуля (возвращает размер) -f Файл является обычным (plain) файлом -d Файл является каталогом -l Файл является символической ссылкой -p Файл является именованным програмным каналом (FIFO) или проверяемый дескриптор связан с програмным каналом -S Файл является сокетом -b Файл является специальным блочным файлом -c Файл является специальным символьным файлом -t Дескриптор файла связан с терминалом -u У файла установлен бит setuid -g У файла установлен бит setgid -k У файла установлен бит запрета (sticky bit) -T Файл является текстовым файлом -B Файл является двоичным (противоположным текстовому) -M Возраст файла в днях на момент выполнения программы -A То же для врмени последнего обращения к файлу -C То же для время последней модификации индексного дескриптора файла
- Унарные операции применяются к строке, содержащей имя файла, к выражению, вычисляемым значением
которого является имя файла, или к файловому дескриптору Perl. Если параметр операции не задан,
то она тестирует файл, чье имя содержится в специальной переменной $_.
Каждая операция проверки атрибута файла возвращает 1, если файл обладает соответствующим атрибутом,
пустую строку "" в противном случае и неопределенное значение undef,
если указанный в параметре файл не существует.
- Несколько слов об алгоритме определения текстовых и двоичных файлов (операции -T и -B). Эти операции анализируют содержимое первого блока файла на наличие "странных" символов - необычных управляющих последовательностей или байтов с установленными старшими битами. Если обнаружено достаточно большое количество подобных символов (больше 30%), то файл считается двоичным, иначе текстовым. Любой файл с пустым первым блоком рассматривается как двоичный.
- Если эти операции применяются к файловым дескрипторам Perl, то проверяется содержимое буфера ввода/вывода, а не первого блока файла. Обе эти операции, примененные к файловым дескрипторам, возвращают булево значение Истина, если связанный с дескриптором файл пуст или установлен на конец файла.
- При выполнении унарных именованных операций проверки файла на самом деле неявно вызывается функция stat(), причем результаты ее вычисления кэшируются, что позволяет использовать специальный файловый дескриптор _ для ускорения множественных проверок файла:
- Несколько слов об алгоритме определения текстовых и двоичных файлов (операции -T и -B). Эти операции анализируют содержимое первого блока файла на наличие "странных" символов - необычных управляющих последовательностей или байтов с установленными старшими битами. Если обнаружено достаточно большое количество подобных символов (больше 30%), то файл считается двоичным, иначе текстовым. Любой файл с пустым первым блоком рассматривается как двоичный.
- if( -s("filename") && -T _) {
- # Что-то делаем для текстовых файлов не нулевого размера
- . . . . . . . . . . . . . .
- }
- # Что-то делаем для текстовых файлов не нулевого размера
chdir
Изменение текущего рабочего каталога на каталог, определяемый значением параметра ВЫРАЖЕНИЕ. Если параметр опущен, домашний каталог становится текущим. Возвращает бклево значение Истина в случае успешного выполнения операции замены текущего каталога и Ложь в противном случае.
chdir [ВЫРАЖЕНИЕ]
chmod
- Синтаксис :
- chmod СПИСОК
- Функция chmod() изменяет права доступа для файлов, представленных в списке,
переданном ей в качестве параметра. Первым элементом этого списка должно быть трехзначное
восьмеричное число, задающее права доступа для владельца, пользователей из группы, в которую
входит владелец, и прочих пользователей. Каждая восьмеричная цифра определяет право на чтение файла,
запись в файл и его выполнение (в случае если файл представляет выполняемую программу) для указанных
выше групп пользователей. Установленные биты ее двоичного представления отражают соответствующие
права доступа к файлу. Например, если установлены все три бита (восьмеричное число 7), то соответствующая
группа пользователей обладает всеми перечисленными правами: может читать из файла, записывать в
файл и выполнять его. Значение равное 6 определяет право на чтение и запись, 5 позволяет читать из файла,
выполнять его, но не позволяет записывать в этот файл и т.д. Обычно не выполняемый файл создается
с режимом доступа 0666 - все пользователи могут читать и записывать информацию в файл, выполняемый файл -
с режимом 0777. Если владелец файла желает ограничить запись в файл пользователей не его группы,
то следует выполнить следующий оператор:
- chmod 0664, "file.dat";
- Возвращаемым значением функции chmod(), как и функции chown(),
является количество файлов из списка, для которых операция изменения прав доступа завершилась успешно.
- В операционных системах DOS и Windows имеет значение только установка режимов доступа владельца.
chown
- Синтаксис :
- chown СПИСОК
- Любой пользователь, создавший собственный файл, считается его владельцем. Изменить владельца
файла из сценария Perl можно функцией chown(). Параметром этой функции является
список, первые два элемента которого должны представлять числовые идентификаторы uid и gid.
Остальные элементы списка являются именами файлов, для которых изменяется владелец. Эта функция
возвращает количество файлов, для которых операция изменения владельца и группы прошла успешно.
- Пример :
- @list = (234, 3, "file1.dat", "file2.dat");
- $number = chown(@list);
- warn "Изменился владелец не у всех файлов!" if $number != @list-2;
- $number = chown(@list);
- Изменить владельца файла может только сам владелец или суперпользователь (обычно системный администратор) системы UNIX. В операционных системах с файловой системой отличной от UNIX (DOS, Windows) эта функция отрабатывает, но ее установки не влияют на доступ к файлу.
chroot
Определяет новый корневой каталог для всех относительных (начинающихся с косой черты "/") имен файлов процесса пользователя и порожденных им процессов. Не меняет текущий рабочий каталог. В отсутствии параметра используется значение специальной переменной $_. Может вызываться только суперпользователем.
chroot ИМЯ_КАТАЛОГА
close
- Синтаксис :
- close ДЕСКРИПТОР
- По завершению работы с файлом он закрывается функцией close(). Единственным необязательным
параметром этой функции является дескриптор, ассоциированный с файлом.
- Эта функция возвращает значение Истина, если успешно очищен буфер ввода/вывода и закрыт системный дескриптор файла.
- Вызванная без параметра, функция close закрывает файл, связанный с текущим дескриптором, установленным функцией select().
- При возникновении ошибок закрытия файла их можно обнаружить применяя специальную переменную $!:
- Эта функция возвращает значение Истина, если успешно очищен буфер ввода/вывода и закрыт системный дескриптор файла.
- close ( FILE ) or die "Ошибка закрытия файла: $!";
closedir
Закрывает каталог, ассоциированный с дескриптором каталога, заданным параметром ДЕСКРИПТОР. Возвращает булево значение Истина, если каталог успешно закрыт.
closedir ДЕСКРИПТОР
fcntl
Реализует системную команду Unix fcntl(2). Перед использованием следует получить доступ к определениям системных констант оператором use Fcntl.
Возвращаемое значение: если системная функция возвращает -1, то функция Perl - неопределенное значение; если системная функция возвращает 0, то функция Perl строку "0 but true"; если системная функция возвращает какое-либо другое значение, функция Perl возвращает это же значение.
fcntl ДЕСКРИПТОР, ФУНКЦИЯ, СКАЛЯР
glob
Возвращает найденные в текущем каталоге файлы, имена которых удовлетворяют заданному шаблону (с использованием метасимволов Unix "*","?"). Значением выражения должна быть строка, содержащая шаблон имен файлов.
glob ВЫРАЖЕНИЕ
ioctl
Реализует системную команду Unix ioctl(2). Перед использованием следует получить доступ к определениям системных констант оператором require "ioctl.ph";
Возвращаемое значение:
если системная функция возвращает -1, то функция Perl - неопределенное значение;
если системная функция возвращает 0, то функция Perl строку "0 but true";
если системная функция возвращает какое-либо другое значение, функция Perl возвращает это же значение.
fcntl ДЕСКРИПТОР, ФУНКЦИЯ, СКАЛЯР
link
Создает новую "жесткую" ссылку на файл, заданный параметром СТАРЫЙ. Возвращает булево значение Истина в случае успешного создания ссылки и Ложь в противном случае.
link СТАРЫЙ, НОВЫЙ
lstat
Возвращает список значений полей структуры индекснего дескриптора символической ссылки на файл. Если параметр опущен, то используется значение специальной переменной $_.
lstat [ДЕСКРИПТОР] lstat [ВЫРАЖЕНИЕ]Используется для получения информации о символических ссылках. Возвращает список значений полей структуры индексного дескриптора самой ссылки, а не файла, на который она ссылается. Эта функция работает аналогично функции stat().
mkdir
Создание нового каталога с именем, заданным в параметре КАТАЛОГ, и режимом доступа, определяемым параметром РЕЖИМ. При успешном создании каталога возвращает булево значение Истина, в противном случае Ложь и в переменную $! заносится сообщение об ошибке.
mkdir КАТАЛОГ, РЕЖИМ
open
- Синтаксис :
- open ДЕСКРИПТОР, ИМЯ_ФАЙЛА;
- open ДЕСКРИПТОР;
- open ДЕСКРИПТОР;
- Для доступа к файлу из программы Perl необходим дескриптор. Для создания дескриптора используется
функция open(). При выполнении операции open с заданым в параметрах именем файла открывается
соответствующий файл и создается дескриптор этого файла. В качестве дескриптора файла можно
использовать выражение - его значение и будет именем дескриптора. Имя файла задается непосредственно
в виде строкового литерала или выражения, значением которого является строка. Операция open
без имени файла открывает файл, имя которого содержится в скалярной переменной $ДЕСКРИПТОР,
которая не может быть лексической переменной, определенной функцией my().
- Пример :
#! perl -w $var = "out.dat"; $FILE4 = "file4.dat"; open FILE1, "in.dat"; # Имя файла задано строкой open FILE2, $var; # Имя файла задано переменной open FILE3, "/perlourbook/01/".$var; # Имя файла вычисляется в выражении open FILE4; # Имя файла в переменной $FILE4
- Если задано не полное имя файла, то открывается файл с указанным именем и расположенный в том же каталоге, что и программа Perl. Можно задавать полное имя файла, однако следует иметь в виду, что оно зависит от используемой операйионной системы. Например, в Windows следует обязательно задавать имя диска: d:/perlbook/file1.doc
- Любой файл можно открыть в одном из следующих режимов: чтения, записи или добавления в конец файла. Это осуществляется присоединением соответствующего префикса к имени файла:
- Пример :
- < (чтение)
- > (запись)
- >> (добавление)
- Если префикс опущен, то по умолчанию файл открывается в режиме чтения.
- Запись информации в файл, открытый в режиме записи, осуществляется в начало файла, что приводит к уничтожению содержащейся в нем до его открытия информации.
- Информация, содержащаяся в файле, открытом в режиме добавления, не уничтожается, новые записи добавляются в конец файла.
- Если при открытии файла в режиме записи или добавления не существует файла с указанным именем, то он создается, что оличает эти режимы открытия файла от режима чтения, при котором файл должен существовать. В противном случае операция открытия завершается с ошибкой и соответствующий дескриптор не создается.
- Perl позволяет открыть файл еще в одном режиме - режиме чтения/записи.
- Для этого перед префиксом чтения <, записи > или добавления >> следует поставить знак +.
- +< - сохраняют содержимое открываемого файла
- +> - сначало очищает содержимое открываемого файла
- +>> - сохраняют содержимое открываемого файла, запись в файл всегда осуществляется в конец содержимого файла
- < (чтение)
opendir
Открытие каталога, имя которого равно значению параметра ВЫРАЖЕНИЕ, и связывает его с дескриптором, определяемым параметром ДЕСКРИПТОР. Имена дескрипторов каталогов хранаятся в собственном пространстве имен таблицы имен Perl.
opendir ДЕСКРИПТОР, ВЫРАЖЕНИЕ
readlink
Возвращает значение сиволической ссылки, определяемой параметром ВЫРАЖЕНИЕ, если символические ссылки реализуются операционной системой; в противном случае - фатальная ошибка. Если при получении значения символической ссылки были получены системные ошибки, возвращает неопределенное значение и в специальную переменную $! заносится сообщение об ошибке. Если параметр опущен, используется значение переменной $_.
readlink [ВЫРАЖЕНИЕ]
rename
Переименовывает файл. Возвращает 1 в случае успешного переименования и 0 в противном случае.
rename СТАРОЕ_ИМЯ, НОВОЕ_ИМЯ
stat
- В файловой структуре UNIX информация о файле храниться в его индексном дескрипторе (штщву).
Структура индексного дескриптора состоит из 13 полей, для которых используются специальные обозначения:
Поле Описание dev Номер устройства в файловой системе ino Номер индексного дескриптора mode Режим файла (тип и права доступа) nlink Количество жестких ссылок на файл (в отсутствии ссылок равно 1) uid Числовой идентификатор владельца файла gid Числовой идентификатор группы владельца файла rdev Идентификатор устройства (только для специальных файлов) size Размер файла в байтах atime Время последнего обращения к файлу с начала эпохи mtime Время последнего изменения файла с начала эпохи ctime Время изменения индексного дескриптора с начала эпохи blksize Предпочтительный размер блока для операций ввода/вывода blocks Фактическое количество выделенных блоков для размещения файла
- Начало эпохи датируется 1 января 1970 года 0 часов 0 минут.
- Не все перечисленные поля структуры индексного дескриптора поддерживаются всеми файловыми системами.
- Функция stat() предназначена для получения значений полей структуры индексного дескриптора файла. Ее единственным параметорм может быть либо имя файла, либо дескриптор открытого в программе файла. Она возвращает список из 13 элементов, содержащих значения полей структуры индексного дескриптора файла в том порядке, как они перечислены в таблице.
- Типичное использование в программе Perl представлено ниже:
- ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
- $atime,$mtime,$ctime,$blksize,$blocks) = stat($filename);
- $atime,$mtime,$ctime,$blksize,$blocks) = stat($filename);
- Присваивание значение полей списку скалярных переменных с идентификаторами, соответствующими названиям полей, способствует лучшей читаемости программы, чем присваивание массиву скаляров:
- @inode = stat($filename);
- В последнем случае получить значение соответствующего поля можно только с помощью индекса,
что не совсем удобно, так как нужно помнить номер нужного поля структуры.
- Если при обращении к функции stat() не указан параметр, то она возвращает структуру индексного дескриптора файла, чье имя содержится в специальной переменной $_.
- Функция получения информации о файле при успешном выполнении в списковом контексте возвращает список значений полей структуры индексного дескриптора файла или пустой список в случае неудачного завершения. В скалярном контексте она возвращает булево значение Истина или Ложь в зависимости от результатов своего выполнения.
- Для удобства использования информации о файле функция stat() при успешном выполнении кэширует полученные значения полей. Если вызвать эту функцию со специальным дескриптором файла _ (символ подчеркивания), то она возвратит информацию, хранящуюся в кэше от предыдущего ее вызова. Это позволяет проверять различные атрибуты файла без повторного вызова функции stat() или сохранения результатов ее выполнения в переменных программы.
- Функцию stat() можно использовать для получения структуры индексного дескриптора не только файла, но и жестких ссылок на него, а также каталогов, так как они являются также файлами, блоки данных которых содержат имена файлов каталога и их числовых индексных дескрипторов.
- Если при обращении к функции stat() не указан параметр, то она возвращает структуру индексного дескриптора файла, чье имя содержится в специальной переменной $_.
symlink
Создание символической ссылки (параметр НОВОЕ_ИМЯ) на файл (параметр СТАРОЕ_ИМЯ). Возвращает 1 в случае успешного создания символической ссылки и 0 в противном случае.
symlink СТАРОЕ_ИМЯ, НОВОЕ_ИМЯ
umask
Устанавливает маску режима доступа процесса, заданную значением параметра ВЫРАЖЕНИЕ (восьмеричное число), и возвращает предыдущее значение маски режима доступа.
umask ВЫРАЖЕНИЕ
unlink
Удаление файлов, определенных параметром СПИСОК. Возвращает количество успешно удаленных файлов.
unlink СПИСОК
utime
- Синтаксис :
- utime СПИСОК
- В структуре индексного дескриптора файла существует три поля, в которых храниться время
последнего обращения (atime) к файлу, его изменения (mtime) файла и изменения индексного дескриптора
(ctime). Функцией utime() можно изменить время последнего обращения и модификации
файла. Ее параметром является список, содержащий имена обрабатываемых файлов, причем первые
два элемента списка - числовые значения нового времени последнего доступа и модификации:
- @files = ("file1.dat", "file2.dat");
- $now = time;
- utime $now, $now, @files;
- $now = time;
- В этом фрагменте кода время последнего доступа и модификации файлов из списка @files изменяется
на текущее время, полученное с помощью функции time.
- Отметим, что при выполнении функции utime() изменяется и время последней модификации индексного дескриптора (ctime) - оно устанавливается равным текущему времени. Возвращаемым значением является количество файлов, для которых операция изменения времени последнего доступа и модификации прошла успешно.
Функции, относящиеся к управлению выполнением программы
callerВозвращает контекст выполняемой подпрограммы, если вызвана без параметра. В скалярном контексте возвращает имя пакета, в котором находится вызывающая данную подпрограмму (т.е. если наша подпрограмма вызывается из другой подпрограммы, функции eval() или require() ), или неопределенное значение в противном случае. В списковом контексте возвращает список с разнообразными сведениями. Можно передать в качестве параметра число, определяющее уровень вложенности получаемой информации, т.е к какой подпрограмме она относится: 0 - наша подпрограмма; 1 - подпрограмма, вызывающая нашу, и т.д.
Полный синтаксис:
($package, $filename, $line, $subroutine, $hasargs, $wantarray, $evaltext, $is_require) = caller($i);
die
Вне тела функции eval() выводит значения элементов списка, заданного параметром СПИСОК, в стандартный файл ошибок STDERR и завершает выполнение сценария Perl с текущим значением специальной переменной $!. Если используется в теле функции eval(), то сообщение об ошибке помешается в переменную $@ и функция eval() заверщается с неопределенным значением. Такое поведение позволяет использовать функцию die() для генерирования исключительных состояний.
die СПИСОК
do
В действительности не является функцией. Выполняет последовательность операторов Perl, заданных в блоке БЛОК, и возвращает значение последнего выполненного оператора. Если параметром является ВЫРАЖЕНИЕ, то рассматривает его значение как имя файла, который загружает и выполняет как последовательность операторов Perl. Если не удается прочитать файл, возвращает неопределенное значение и помещает в переменную $! сообщение об ошибке; если не может откомпилировать файл, то также возвращает неопределенное значение и помещает сообщение об ошибке в переменную $@. Если содержимое файла успешно откомпилированно, то возвращает значение последнего выполненного оператора.
do БЛОК do ВЫРАЖЕНИЕ
dump
Создание дампа ядра, которое системной командой undump может быть преобразованно в двоичный выполняемый файл. Если задан параметр МЕТКА, то при повторном вычислении двоичного файла, сначала выполнится оператор goto МЕТКА;. Функция устаревшая - существует компилятор из Perl в C, который выполняет ее функцию.
dump МЕТКА
eval
- Синтаксис 1:
- eval EXPR
- Функция eval() рассматривает параметр EXPR как текст Perl-программы, кампилирует
его и, если не обнаруживает ошибок, выполняет в текущем вычислительном окружении. Если параметр
EXPR отсутствует, вместо него по умолчанию используется глобальная переменная $_.
Компиляция програмного кода EXPR осуществляется при каждом вызове функции eval()
во время выполнения основной программы. Если выполнения мини-программы EXPR завершается успешно,
функция eval() возвращает значение последнего выражения, вычисленного внутри EXPR.
Если код EXPR содержит синтаксические ошибки, или обращение к функции die(),
или возникла ошибка во время выполнения EXPR, то в специальную переменную $@
помещается сообщение об ошибке, а функция eval() возвращает неопределенное значение.
- Если скалярной переменной не присвоено никакое допустимое значение (число, строка или ссылка), то говорят, что она имеет неопределенное значение. Неопределенные значения возникают в различных случаях, например, при попытке чтения данных после достижения конца файла или в результате системных ошибок. Неопределенное значение представляется пустой строкой "", но его следует отличать от определенного значения, равного "". Например, в результате выполнения операторов
- Если скалярной переменной не присвоено никакое допустимое значение (число, строка или ссылка), то говорят, что она имеет неопределенное значение. Неопределенные значения возникают в различных случаях, например, при попытке чтения данных после достижения конца файла или в результате системных ошибок. Неопределенное значение представляется пустой строкой "", но его следует отличать от определенного значения, равного "". Например, в результате выполнения операторов
- $e = eval '$a = 1/0'; # деление на 0
- $b = "";
- print "a= $a\n" if defined $a;
- print "e= $e\n" if defined $e;
- print "b= $b\n" if defined $b;
- $b = "";
- переменные $a и $e будут иметь неопределенное значение, а переменная $b - определенное значение
"".
- Для того чтобы определить, имеет выражение EXPR определенное значение или нет, существует функция defined EXPR, возвращающая соответствующее булевское значение. В данном примере результатом выполнения будет вывод единственной строки
- Для того чтобы определить, имеет выражение EXPR определенное значение или нет, существует функция defined EXPR, возвращающая соответствующее булевское значение. В данном примере результатом выполнения будет вывод единственной строки
- b=
- Специальная переменная $@ служит для запоминания сообщения
об ошибке, возникшей при последнем обращении к функции eval().
- Существует вторая форма функции eval()
- Синтаксис 2:
- Существует вторая форма функции eval()
- eval BLOCK,
- где BLOCK придставляет собой блок - последовательность операторов, заключенную в фигурные
скобки. Вторая форма отличается от первой тем, что синтаксический анализ параметра BLOCK
осуществляется всего один раз - во время компиляции основной программы, содержащей обращение
к функции eval(). Таким образом, если параметр BLOCK содержит синтаксические ошибки,
то они обнаружатся на этапе компиляции основной программы. При использовании первой формы
синтаксические ошибки обнаружатся только во время выполнения.
- Основным применением функции eval() является перехватывание исключений. Исключением мы называем ошибку, возникающую при выполнении программы, когда нормальная последовательность выполнения прерывается (например, при делении на нуль). Обычно реакцией на исключение является аварийное завершение программы. Язык Perl предоставляет возможность перехватывать исключения без аварийного выхода. Если исключение возникло в основной программе, то программа завершается. Если ошибка возникла внутри мини-программы функции eval(), то аварийно завершается только функция eval(), а основная программа продолжает выполняться и может реагировать на возникшую ошибку, сообщение о которой ей достанется через переменную $@.
- В следующем примере функция eval() применяется для перехватывания ошибки, связянной с делением на 0 при вычислении функции ctg(x). Используются встроенные функции sin, cos и warn. Последняя функция осуществляет вывод сообщения, задаваемого ее аргументом, на стандартное устройство вывода ошибок STDERR.
- Пример :
- Основным применением функции eval() является перехватывание исключений. Исключением мы называем ошибку, возникающую при выполнении программы, когда нормальная последовательность выполнения прерывается (например, при делении на нуль). Обычно реакцией на исключение является аварийное завершение программы. Язык Perl предоставляет возможность перехватывать исключения без аварийного выхода. Если исключение возникло в основной программе, то программа завершается. Если ошибка возникла внутри мини-программы функции eval(), то аварийно завершается только функция eval(), а основная программа продолжает выполняться и может реагировать на возникшую ошибку, сообщение о которой ей достанется через переменную $@.
#!/bin/perl $fi = 0.314159265358979; $f = '$ctg = cod($x)/sin($x)'; for $i (0..10) { $x = $i*$fi; eval $f; print "x= $x ctg(x) = $stg\n" if defined $ctg; warn "x= $x ", $@ if not defined $ctg; };
- Вывод программы выглядит следующим образом
- x= 0 Illegal division zero at (eval 1) line 1.
- x= 0.314159265358979 ctg(x) = 3.07768353717526
- x= 0.628318530717958 ctg(x) = 1.37638192047118
- . . .
- x= 0.314159265358979 ctg(x) = 3.07768353717526
- Иногда бывает полезно искусственно вызвать исключительную ситуацию. Для этого можно воспользоваться функцией die() LIST. Назначение функции die() - генерировать исключения. Если функция die() вызывается в основной программе вне функции eval(), то она осуществляет аварийное завершение основной программы и выводит сообщение об ошибке LIST на стандартное устройство вывода ошибок STDERR. Если она вызывается внутри функции eval(), то осуществляется аварийное завершение eval() и помещает сообщение об ошибке в специальную переменную $@.
exit
Немедленно прекращает выполнение программы с кодом завершения, равным значению параметра ВЫРАЖЕНИЕ. Если параметр не задан, программа завершается с кодом 0.
exit [ВЫРАЖЕНИЕ]
return
Выход из подпрограммы, функции eval() или do ФАЙЛ с кодом завершения равным значению параметра ВЫРАЖЕНИЕ. Если в подпрограмме, функции eval() или do ФАЙЛ не используется эта функция, то они завершаются с кодом, равным значению последнего выполненного оператора.
return ВЫРАЖЕНИЕ
sub
В действительности это не функция, а объявление подпрограммы: анонимной (без параметрп ИМЯ, но с блоком операторов БЛОК), прототипа (без блока операторов БЛОК) и нормальной.
sub БЛОК sub ИМЯ sub ИМЯ БЛОК
wantarray
Возвращает значение Истина, если контексту выполняемой подпрограммы требуется списковое значение, и Ложь, если требуется скалярное значение. Возвращает неопределенное значение, если подпрограмме требуется безразличный (void) контекст.
wantarray
Функции, относящиеся к области видимости переменных
importВстпвляет пространство имен одного модуля в другой. Это не встроенная функция, а всего лищь метод, наследуемый от модуля (параметр МОДУЛЬ), которому необходимо экспортировать свои имена (параметр СПИСОК) в другой модуль.
import МОДУЛЬ СПИСОК
local
- Функция local() используется для объявления и инициализации одной или нескольких переменных:
- local EXPR
- local ($myvar, $@mylist, %myhash);
- local $pi = 3.14159;
- local ($pi, $exp) = (3.14159, 2.71828);
- local ($myvar, $@mylist, %myhash);
- но, в отличие от функции my() она создает не локальные переменные,
а временные значения для глобальных переменных внутри:
- подпрограммы;
- заключенного в фигурные скобки блока операторов;
- выражения, пареданного на выполнение функции eval();
- файла;
- в зависимости от того, в каком месте вызвана для объявления переменных сама функция local(). Если функция local() применяется для описания нескольких переменных, они должны быть заключены в скобки. Если глобальня перемнная, объявленная при помощи этой функции, ранее встречалась до объявления и имела некоторое значение, то это значение сохраняется в скрытом стеке и восстанавливается после выхода соответственно из подпрограммы, блока, функции eval() или файла. Переменная, объявленная при помощи функции local(), или, точнее, ее временное значение, доступна для любой функции, вызванной внутри подпрограммы, блока, функции eval() или файла, в которых сделано объявление. Такую переменную называют динамической, а ее область видимости - динамической областью видимости. В названии отражается тот факт, что область видимости переменной динамически изменяется с каждым вызовом функции, получающей доступ к этой переменной.
- Пример :
sub f1{ local ($x) = "aaaa"; my($y) = "bbbb"; print("f1: x = $x\n"); print("f1: y = $y\n\n"); f2(); print("f1: x = $x\n"); print("f1: y = $y\n\n"); } sub f2{ print("f2: x = $x\n"); print("f2: y = $y\n\n"); $x = "cccc"; $y = "dddd"; print("f2: x = $x\n"); print("f2: y = $y\n\n"); } f1;
- Результатом выполнения данного примера будет следующий вывод:
- f1: x = aaaa
- f1: y = bbbb
- f2: x = aaaa
- f2: y =
- f2: x = cccc
- f2: y = dddd
- f1: x = cccc
- f1: y = bbbb
- f1: y = bbbb
- Как видно из приведенного результата, функция f2() не имеет доступа к переменной $y, объявленной при помощи функции my() внутри функции f1(), и,напртив, имеет доступ к переменной $x, объявленной внутри f1() при помощи функции local().
my
- Функция my() используется для объявления одной или нескольких переменных локальными:
- my EXPR
- и ограничивает их область действия:
- подпрограммой;
- заключенным в фигурные скобки блоком операторов;
- выражением, пареданным на выполнение функции eval();
- файлом, в зависимости от того, в каком месте вызвана для объявления переменных сама функция my().
- Если выражение EXPR содержит список переменных, то он должен быть заключен в скобки:
- my ($myvar, @mylist, %myhash);
- Одновременно с объявлением переменные могут быть инициализированны:
- my $pi = 3.14159;
- my ($pi, $exp) = (3.14159, 2.71828);
- my ($pi, $exp) = (3.14159, 2.71828);
- Переменные, объявленные при помощи функции my(), доступны в своей области действия
только для подпрограмм, определенных в этой области. Для подпрограмм, определенных за ее пределами,
они недоступны. Такие переменные называются лексическими, а саму область видимости - лексической
или статической областью видимости.
- Пример :
sub f1{ local ($x) = "aaaa"; my($y) = "bbbb"; print("f1: x = $x\n"); print("f1: y = $y\n\n"); f2(); print("f1: x = $x\n"); print("f1: y = $y\n\n"); } sub f2{ print("f2: x = $x\n"); print("f2: y = $y\n\n"); $x = "cccc"; $y = "dddd"; print("f2: x = $x\n"); print("f2: y = $y\n\n"); } f1;
- Результатом выполнения данного примера будет следующий вывод:
- f1: x = aaaa
- f1: y = bbbb
- f2: x = aaaa
- f2: y =
- f2: x = cccc
- f2: y = dddd
- f1: x = cccc
- f1: y = bbbb
- f1: y = bbbb
- Как видно из приведенного результата, функция f2() не имеет доступа к переменной $y, объявленной при помощи функции my() внутри функции f1(), и,напртив, имеет доступ к переменной $x, объявленной внутри f1() при помощи функции local().
package
Определяет отдельное глобальное пространство имен (пакет):
все неопределенные динамические идентификаторы (включая те, которые объявлены через local(), но не my() ) будут храниться в нем. Для доступа к ним вне пакета следует указывать префикс, представляющий имя пакета с последующими двумя символами двоеточий "::". Область видимости переменных пакета распространяется до конца блока операторов, в котором расположен пакет или до нового объявления пакета. Если опущено имя пакета, то предписывает, чтобы все индентификаторы были определены, включая имена функций.
package [ИМЯ_ПАКЕТА]
use
Загружает модуль во время компиляции; если модуль не доступен, то компиляция всей программы прекращается.
use МОДУЛЬ СПИСОК use МОДУЛЬ use МОДУЛЬ ВЕРСИЯ СПИСОК use ВЕРСИЯ
Функции, относящиеся к модулям Perl
noОтказ от импортирования символических имен (параметр СПИСОК) модуля (параметр МОДУЛЬ) во время компиляции программы. Является антонимом функции use.
no МОДУЛЬ СПИСОК
require
Загружает модуль или класс, имя которого является значением параметра ВЫРАЖЕНИЕ, во время выполнения программы. Если параметр опущен, то используется значение специальной переменной $_. Если значение параметра ВЫРАЖЕНИЕ является число, то оно определяет минимальную версию Perl, необходимую для выполнения программы.
require [ВЫРАЖЕНИЕ]
Функции, относящиеся к классам и объектно-ориентированным технологиям
blessПосле выполнения функции bless() ссылка на субъект Perl (переменную, массив или хеш), определенная параметром ССЫЛКА, становиться ссылкой на объект, определяемый пакетом с именем, равным значению параметра ИМЯ_КЛАССА. Если этот параметр не задан, то подразумевается текущий пакет.Возвращаемое значение - ссылка на объект.
bless ССЫЛКА, ИМЯ_КЛАССА bless ССЫЛКА
ref
Если параметр ВЫРАЖЕНИЕ является ссылкой, то возвращает тип субъекта ссылки; в противном случае Ложь. Если параметр опущен, то используется переменная $_. Возвращаемым значением может быть :
REF,SCALAR,ARRAY,HASH,CODE,GLOB или имя пакета, если ссылка была переопределена функцией bless().
ref [ВЫРАЖЕНИЕ]
tie
Связывает переменную, определенную параметром ПЕРЕМЕННАЯ, с классом ИМЯ_КЛАССА, который будет обеспечивать реализацию методов доступа для этой переменной, список которых зависит от типа связываемой переменной (скаляр, массив, хеш, дескриптор файла). Операции доступа к связанной переменной (например, получение и присваивание значения для скалярной переменной или присваивание значения элементу массива и т.д.) автоматически вызывают соответствующие методы определенного класса. Элементы параметра СПИСОК передаются соответствующим конструкторам этого класса в зависимости от типа связываемой переменной; TIESCALAR(), TIEARRAY(), TIEHASH() или TIEHANDLE(). Возвращаемым значением функции является объект класса, к которому привязывается переменная.
tie ПЕРЕМЕННАЯ, ИМЯ_КЛАССА, СПИСОК
tied
Возвращает объект класса, с которым связана переменная, определенная параметром ПЕРЕМЕННАЯ, с помощью функции tie().
$object = tied ПЕРЕМЕННАЯ
untie
Разрывает созданную функцией tie() связь между переменной, определенной параметром ПЕРЕМЕННАЯ, и классом, реализующим методы доступа к ней.
untie ПЕРЕМЕННАЯ
Разные функции
definedПроверяет, не равно ли значение выражения, заданное параметром ВЫРАЖЕНИЕ, неопределенной величине undef; если не равно, то возвращает булево значение Истина, в противном случае Ложь. Если параметр функции опущен, то используется значение специальной переменной $_.
defined [ВЫРАЖЕНИЕ]
formline
Внутренняя функция, используемая операцией format, но ее можно вызывать и явным образом. Выводит значения элементов списка, представленного параметром СПИСОК, в специальную переменную $^A - аккумулятор форматного вывода. Вывод осуществляется в соответствии с заданной параметром ШАБЛОН строкой шаблонов. Управляющие символы "~" и "~~" игнорируются. Всегда возвращает значение Истина.
formline ШАБЛОН, СПИСОК
reset
Используется для очистки переменных и переустановки команды поиска ?образец? (обычно в блоке continue цикла). Значением параметра ВЫРАЖЕНИЕ должна быть строка, представляющая символ, с которого начинается имя переменной (допустим дефис "-" для задания интервалов символов). Если параметр опущен, то переустанавливает команду поиска ?образец?, чтобы она могла осуществить очередной поиск в соответствии с заданным образцом. Действует только на переменные текущего пакета. Всегда возвращает значение 1.
reset [ВЫРАЖЕНИЕ]
scalar
Вычисляет выражение, определяемое параметром ВЫРАЖЕНИЕ, в скалярном контексте и возвращает вычисленное значение.
scalar ВЫРАЖЕНИЕ
undef
Унарная операция, присваивающая lvalue, представленным параметром ВЫРАЖЕНИЕ, неопределенное значение. Применяется к скалярным переменным ($), массивам скаляров (@), хешам (%), подпрограммам (&) и глобальным типам(*). Всегда возвращает неопределенное значение. Вызванная без параметра, просто вычисляет неопределенное значение, которое можно использовать, например, в качестве возвращаемого значения функции.
undef [ВЫРАЖЕНИЕ]
vec
Рассматривает строковое значение параметра ВЫРАЖЕНИЕ как последовательность целых чисел без знака и возвращает значение битового поля, номер которого определяется значением параметра СМЕЩЕНИЕ (первое поле в строке всегда имеет номер 0). Параметр БИТЫ_ПОЛЯ задает ширину битового поля в битах. Может использоваться в качестве левого значения операции присваивания (в этом случае параметры должны быть заключены в скобки).
vec ВЫРАЖЕНИЕ, СМЕЩЕНИЕ, БИТЫ_ПОЛЯ
Функции для работы с процессами и группами процессов
alarmОпределяет количество секунд (параметр СЕКУНДЫ), через который должен быть выдан сигнал SIGALARM. Если параметр отсутствует, используется значение специальной переменной $_.
alarm [СЕКУНДЫ]
exec
Выполняет заданную параметром СПИСОК команду, прекращая дальнейшее выполнение программы Perl. Никогда не возвращает кода возврата выполнения команды, только в случае, если команда не существует, возвращает булево значение Ложь. Если СПИСОК состоит более чем из одного элемента, вызывает системную команду execvp(3) и передает ей в качестве параметров значения списка, которая вызывает заданную первым элементом списка команду, интерпретируя оставшиеся элементы как ее параметры. Если список представлен одной скалярной переменной или массивом из одного элемента, то его значение проверяется на наличие метасимволов командного интерпретатора shell. Если таковые обнаружены, то вся строка передается анализатору shell(в Unix это /bin/sh -c); в противном случае она разбивается на слова и передается в качестве параметра системной команде execvp(). В системной переменной $0 сохраняется имя выполняемой команды. В форме с параметром ПРОГРАММА выполняет команду, заданную этим параметром, а в системную переменную $0 заносится содержимое первого элемента списка. Таким образом можно скрыть от программы Perl имя истинной выполняемой команды.
exec СПИСОК exec ПРОГРАММА СПИСОК
fork
Осуществляет вызов системной функции fork(2), создающей новый процесс. Возвращает идентификатор порожденного процесса в родительский процесс, значение 0 в порожденный процесс и неопределенное значение undef, если не удалось создать новый процесс.
fork
getpgrp
Возвращает текущую группу процесса с заданным идентификатором PID. Если значение параметра PID равно 0, или он опущен, то возвращается текущая группа текущего процесса.
getpgrp PID
getppid
Возвращает идентификатор процесса (ID) родительского процесса.
getppid
getpriority
Возвращает текщий приоритет процесса, группы процесса или пользователя.
getpriority WHICH, WHO
kill
Посылает сигнал процессам, определенным в элементах списка параметра СПИСОК. Первым элементом списка должен быть посылаемый сигнал; если он отрицательный, то уничтожаются группы процессов, а не сами процессы. Возвращает количество процессов, которым передан сигнал.
kill СПИСОК
pipe
Открывает пару соединенных дескрипторов файлов, образуя програмный канал (pipe). Записанные в один файл данные можно прочитать из другого. При передачи данных используются буферы стандартной системы ввода/вывода stdio.
pipe ДЕСКРИПТОР_ЧТЕНИЯ, ДЕСКРИПТОР_ЗАПИСИ
setpgrp
Устанавливает для процесса с заданным идентификатором (параметр PID) текущую группу равной значению параметра PGRP. Значение 0 идентификатора процесса соответствует текущему процессу. Если оба параметра опущены, то по умолчанию их значения принимаются равными 0.
setpgrp PID, PGRP
setpriority
Устанавливает текущий приоритет процесса, группы процесса или пользователя.
setpriority WHICH, WHO, PRIORITY
sleep
Приостанавливает работу программы Perl на заданное значением параметра ВЫРАЖЕНИЕ количество секунд или на всегда, если параметр отсутствует. Выходит из состояния ожидания раньше указанного времени, если процесс получает сигнал GIGALARM. Возвращает действительное количество секунд нахождения программы в состоянии ожидания.
sleep ВЫРАЖЕНИЕ
system
Аналогична функции exec(), но для выполнения команды порождает новый процесс, окончания которого ожидает родительский процесс, прежде чем продолжить свое выполнение. Все, что сказано относительно параметров функции exec(), распространяется и на параметры функции system(). Возвращает такой же код завершения команды, что и функция wait(); для получения истинного кода завершения полученное значение следует разделить на 256.
system СПИСОК system ПРОГРАММА СПИСОК
times
Возвращает четырехэлементный список, содержащий пользовательское и системное время для процесса и порожденного им процесса.
($user, $system, $cuser, $csystem) = times;
wait
Ожидает завершение порожденного процесса и возвращает идентификатор завершенного порожденного процесса или -1 в случае, если порожденных процессов не существует. В специальной переменной $? сохраняется статус завершения.
wait
waitpid
Ожидает завершения процесса с заданным в параметре PID идентификатором процесса (-1 означает любой процесс) и возвращает идентификатор завершенного порожденного процесса или -1 в случае, если порожденных процессов не существует. Параметр FLAGS представляет набор флагов, уточняющих действие функции. Например, флаг WHOANG означает не блокирующее ожидание завершения любого процесса. Во всех системах реализован флаг 0, означающий блокирующий вызов. В специальной переменной $? сохраняется статус завершения.
waitpid PID, FLAGS
Низкоуровневые функции работы с сокетами
acceptПринимает входящее подключение через сокет; работает анологично системной команде accept(2). Возвращает упакованный адрес сокета в случае успешного подключения; иначе булево значение Ложь.
accept НОВЫЙ_СОКЕТ, РОДОВОЙ_СОКЕТ
bind
Назначает сокету, определенному параметром СОКЕТ, сетевой адрес, заданный параметром ИМЯ. Имя сокета представляет собой упакованный адрес сокета соответствующего типа. Возвращает булево значение Истина в случае успешного назначения и Ложь в противном случае.
bind СОКЕТ, ИМЯ
connect
Осуществляет подключение сокета, определенного параметром СОКЕТ, к удаленному сокету, имя которого заданно параметром ИМЯ. Имя удаленного сокета представляет собой упакованный адрес сокета соответствующего типа. Возвращает булево значение Истина в случае успешного назначения и Ложь в противном случае.
connect СОКЕТ, ИМЯ
getpeername
Возвращает упакованный адрес удаленного сокета, к которому подключен СОКЕТ функцией connect().
getpeername СОКЕТ
getsockname
Возвращает упакованный адрес сокета программы, который подключен функцией connect() к удаленному сокету.
getsockname СОКЕТ
getsockopt
Возвращает значение затребованной опции (параметр ИМЯ_ОПЦИИ) сокета (параметр СОКЕТ) заданного уровня (параметр УРОВЕНЬ) или неопределенное значение в случае возникновения ошибки.
getsockopt СОКЕТ, УРОВЕНЬ, ИМЯ_ОПЦИИ
listen
Включает режим приема для указанного сокета, регистрируя его как сервер. Возвращает булево значение Истина в случае успешного включения и Ложь в противном случае.
listen СОКЕТ, РАЗМЕР_ОЧЕРЕДИ
recv
Получение заданного значением параметра ДЛИНА количества байтов через указанный сокет (параметр СОКЕТ) и сохранение их в скалярной переменной СКАЛЯР. Возвращает адреса удаленного сокета, из которого прочитанны данные, или неопределенное значение в случае возникновения ошибки при получении данных. В действительности вызывает C- функцию recvfrom(); параметр ФЛАГИ полностью соответствует аналогичному параметру указанной функции C.
recv СОКЕТ, СКАЛЯР, ДЛИНА, ФЛАГИ
send
Посылает строку сообщения (параметр СООБЩЕНИЕ) через сокет, заданный параметром СОКЕТ. Параметр ФЛАГИ имеет то же смусл, что и при вызове системной функции с одноименным названием. Если сокет не подключен к удаленному сокету, то параметр АДРЕС определяет адрес сокета, к которому следует подключиться. Возвращает количество переданных символов или неопределенное значение в случае возникновения ошибки.
send СОКЕТ, СООБЩЕНИЕ, ФЛАГИ[, АДРЕС]
setsockopt
Устанавливает заданную параметром ИМЯ_ОПЦИИ опцию сокета. Возвращает неопределенное значение undef в случае возникновения ошибки.
setsockopt СОКЕТ, УРОВЕНЬ, ИМЯ_ОПЦИИ, ЗНАЧЕНИЕ
shutdown
Закрывает указанный в параметре СОКЕТ сокет на выполнение определенных операций, задаваемых параметром ДЕЙСТВИЕ: 0 - прекращает чтение, 1 - прекращает запись, 2 - прекращает использование сокета.
shutdown СОКЕТ, ДЕЙСТВИЕ
socket
Открывает сокет указанного типа и ассоциирует его с дескриптором сокета, заданного параметром СОКЕТ. Параметры ОБЛАСТЬ, ТИП и ПРОТОКОЛ аналогичны таким же параметрам при вызове системной функции с таким же именем. Перед использованием этой функции следует оператором use Socket; импортировать необходимые определения.
socket СОКЕТ, ОБЛАСТЬ, ТИП, ПРОТОКОЛ
socketpair
Создает безимянную пару двунаправленных сокетов указанного типа в заданной области. Параметры ОБЛАСТЬ, ТИП и ПРОТОКОЛ аналогичны таким же параметрам привызове системной функции с таким же именем. Возвращает булево значение Истина в случае успешного создания пары сокетов.
socketpair СОКЕТ1, СОКЕТ1, ОБЛАСТЬ, ТИП, ПРОТОКОЛ
Функции для работы со временем и датой
gmtimeПреобразует значение даты и времени, полученное функцией time() в 9-элементный массив, соответствующий временной зоне Гринвича. Все элементы массива являются числами. Месяцы ($mon) нумеруются целыми числами от 0 до 11; дни недели ($wday) целыми от 0 до 6, причем 0 соответствует воскресенью; год ($year) отсчитывается от года 1900. В скалярном контексте возвращает такую же структуру даты, что и системная функция ctime(3): "Thu Oct 13 04:54:34 2000"
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=gmtime(time);
localtime
Полностью соответствует функции gmtime() за исключением того, что значения элементов возвращаемого массива соответствуют зоне местного времени, а не гринвичской.
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
time
Возвращает число секунд, прошедших от начала эпохи - 1 января 1970 года.
time
times
Возвращает четырехэлементный массив, содержащий пользовательское и системное время для процесса и порожденного им процесса.
($user,$system,$cuser,$csystem)=times;
Информация о пользователях и группах
endpwentЗакрытие файла паролей после завершения обработки его содержимого.
endpwent
getpwent
Возвращает следующую запись файла паролей при очередном вызове.
getpwent
getpwnam
Получение записи из файла паролей от пользователя по его регистрационному имени.
getpwnam ИМЯ
getpwuid
Получение записи из файла паролей от пользователя по его числовому идентификатору, заданному параметром UID.
getpwuid UID
setpwent
Позиционирование файла паролей на первую запись. последующий вызов функции getpwent() начинает его обработку с первой записи.
setpwent
endgrent
Закрытие файла групп после завершения обработки его содержимого.
getgrent
getgrgid
Получение записи из файла групп о группе по его числовому идентификатору, заданному параметром GID.
getgrgid GID
getgrnam
Получение записи из файла групп о группе по ее имени, заданному параметром ИМЯ.
getgrnam ИМЯ
setgrent
Позиционирование файла групп на первую запись. Последующий вызов функции getgrent() начинает его обработку с первой записи.
setgrent
getlogin
Возвращает регистрационное имя пользователя на рабочей станции, где выполняется программа Perl.
getlogin
Сетевая информация
endhostentЗакрытие файла хостов после завершения обработки его содержимого.
endhostent
gethostbyaddr
Получение записи из файла хостов о хосте с заданным IP-адресом и типом.
gethostbyaddr ADDR, ADDRTYPE
gethostbyname
Получение записи из файла хостов о хосте с заданным именем.
gethostbyname ИМЯ
gethostent
Возвращает следующую запись файла хостов при очередном вызове.
gethostent
sethostent
Позиционирование файла хостов на первую запись. Последующий вызов функции gethostent() начинает его обработку с первой записи.
sethostent STAYOPEN
endnetent
Закрытие файла сетей после завершения обработки его содержимого.
endnetent
getnetbyaddr
Получение записи из файла сетей о сети с заданным адресом и типом.
getnetbyaddr ADDR, ADDRTYPE
getnetbyname
Получение записи из файла сетей о сети с заданным сетевым именем.
getnetbyname ИМЯ
getnetent
Возвращает следующую запись файла сетей при очередном вызове.
getnetent
setnetent
Позиционирование файла сетей на первую запись. Последующий вызов функции getnetent() начинает его обработку с первой записи.
setnetent STAYOPEN
endprotoent
Закрытие файла протоколов после завершения обработки его содержимого.
endprotoent
getprotobyname
Получение записи из файла протоколов о протоколе с заданным именем.
getnetbyname ИМЯ
getprotobynumber
Получение записи из файла протоколов о протоколе с заданным номером.
getprotobynumber НОМЕР
getprotoent
Возвращает следующую запись файла протоколов при очередном вызове.
getprotoent
setprotoent
Позиционирование файла протоколов на первую запись. Последующий вызов функции getprotoent() начинает его обработку с первой записи.
setprotoent STAYOPEN
endservent
Закрытие файла служб после завершения обработки его содержимого.
endservent
getservbyname
Получение записи из файла служб о службе с заданным именем и протоколом.
getservbyname ИМЯ, ПРОТОКОЛ
getservbyport
Получение записи из файла служб о службе с заданным номером порта и протоколом.
getservbyport ПОРТ, ПРОТОКОЛ
getservent
Возвращает следующую запись файла служб при очередном вызове.
getservent
setservent
Позиционирование файла служб на первую запись. Последующий вызов функции getservent() начинает его обработку с первой записи.
setservent
Функции взаимодействия между процессами
msgctlВызывает системную функцию msgctl(2). Если команда, заданная параметром CMD, является командой IPC_STAT, то параметр ARG должен быть переменной, которая будет содержать структуру msgid_ds. Возвращаемое значение функции аналогично возвращаемому значению функции ioctl(): если системная функция возвращает -1, то функция Perl - строку "0 but true"; если системная функция возвращает какое-либо другое значение, то функция Perl возвращает это же значение. См. также документацию по модулям IPC::SysV и IPC::SysV::Msg.
msgctl ID, CMD, ARG
msgget
Создает очередь сообщений с заданным параметром КЛЮЧ ключом, вызывая системную функцию msgget(2). Возвращает идентификатор очереди сообщений, если она успешно создана, или неопределенное значение в противном случае. См. также жокументацию по модулям IPC::SysV и IPC::SysV::Msg.
msgget КЛЮЧ, ФЛАГИ
msgrcv
Вызывает системную функцию msgrcv для получения сообщения из очереди сообщений с идентификатором, заданным параметром ID, и сохраняя его в переменной, определяемой параметром ПЕРЕМЕННАЯ. Максимальная длина сообщения не может превышать значения, заданного параметром ДЛИНА. Если сообщение получено, то в переменной перед самим сообщением сохраняется его тип. Возвращает булево значение Истина в случае успешного получения сообщения или Ложь в противном случае. См. также документацию по модулям IPC::SysV и IPC::SysV::Msg.
msgrcv ID, ПЕРЕМЕННАЯ, ДЛИНА, ТИП, ФЛАГИ
msgsnd
Вызывает системную функцию msgsnd для посылки сообщения, заданного параметром СООБЩЕНИЕ, в очередь сообщений с идентификатором, заданным параметром ID. Сообщение должно начинаться с типа сообщения, представленного длинным целым числом, которое можно создать функцией pack("l", $type). Возвращает булево значение Истина в случае успешной посылки сообщения и Ложь в противном случае. См. также документацию по модулям IPC::SysV и IPC::SysV::Msg.
msgsnd ID, СООБЩЕНИЕ, ФЛАГИ
semctl
Вызывает системную функцию semctl(). Если команда, заданная параметром CMD, является командой IPC_STAT или GETALL, то параметр ARG должен быть переменной, которая будет содержать возвращаемую форму semid_ds или массив значений семафора. Возвращаемое значение функции аналогично возвращаемому значению функции ioctl(): если системная функция возвращает -1, то функция Perl неопределенное значение; если системная функция возвращает 0, то функция Perl строку "0 but true"; если системная функция возвращает какое-либо другое значение, то функция Perl возвращает это же значение. См. также документацию по модулям IPC::SysV и IPC::SysV::Msg.
semctl ID, SEMNUM, CMD, ARG
semget
Создает набор симафоров, вызывая системную функцию semget. Возвращает идентификатор семафора, если набор успешно создан, или неопределенное значение в противном случае. См. также документацию по модулям IPC::SysV и IPC::SysV::Msg.
semget KEY, NSEMS, FLAGS
semop
Вызывает системную функцию semop для выполнения операций с семафором, например, сигнализация или ожидание. Параметр OPSTRING должен быть упакованным массивом структур semop, каждая из которых создается функцией pack("sss", $semnum, $semop, $semfkag). Количество операций с семафором определяется числом элементов массива OPSTRING. Возвращает булево значение Истина в случае успешного выполнения операций с семафором или Ложь в противном случае. См. также документацию по модулям IPC::SysV и IPC::SysV::Msg.
semop KEY, OPSTRING
shmctl
Вызывает системную функцию shmctl. Если команда, заданная параметром CMD, является командой IPC_STAT, то параметр ARG должен быть переменной, которая будет содержать возвращаемую структуру shmid_ds. Возвращаемое значение функции аналогично возвращаемому значению функции ioctl(): если системная функция возвращает -1, то функция Perl неопределенное значение; если системная функция возвращает 0, то функция Perl строку "0 but true"; если системная функция возвращает какое- либо другое значение, то и функция Perl возвращает это же значение. См. также документацию по модулям IPC::SysV и IPC::SysV::Msg.
shmctl ID, CMD, ARG
shmget
Создает область памяти для совместного использования (разделяемая область памяти), вызывая системную функцию shmget. Возвращает идентификатор разделяемой области памяти, если она успешно создана, или неопределенное значение в противном случае.См. также документацию по модулям IPC::SysV и IPC::SysV::Msg.
shmget KEY, SIZE, FLAGS
shmread
Читает в переменную VAR заданное параметром SIZE количество байт из разделяемой области с идентификатором, определенным параметром ID, начиная с позиции, указанной параметром POS. Возвращает булево значение Истина в случае успешного чтения данных и Ложь в противном случае. См. также документацию по модулям IPC::SysV.
shmread ID, VAR, POS, SIZE
shmwrite
Записывает заданное параметром SIZE количество байт из строки данных STRING в разделяемую область памяти с идентификатором, определяемым параметром ID, начиная с позиции, указанной параметром POS. Если строка данных содержит меньшее количество байт, то добавляются нулевые значения "\0". Возвращает булево значение Истина в случае успешной записи данных и Ложь в противном случае. См. также документацию по модулям IPC::SysV.
shmwrite ID, STRING, POS, SIZE
Стандартные модули Perl
Стандартная постановка Perl включает в себя большое число модулей, в которых представлены разные средства и функции для решения многих задач, возникающих при программировании на Perl. Простым подключением соответствующего модуля к своей программе можно получить необходимые средства для решения конкретной задачи. Более того, все перечисленные ниже модули присутствуют в системах программирования на языке Perl на всех известных платформах. Поэтому, если использовать их в своих разработках, то проблем с переносимостью программ Perl никогда не возникнет.AnyDBM_File
Этот модуль всего лищь загружает один из модулей для связывания хешей Perl с файлами DBM в следующей последовательности: NDBM_File, DB_File, GDBM_File, SDBM_File и ODBM_File. Если установлен модуль NDBM_File, то загружается он; если его нет, то ищется следующий из приведенного списка и т.д. Модуль SDBM_File всегда присутствует, так как он входит в стандартную постановку Perl.
AutoLoader
Предоставляет стандартный механизм для отложенной загрузки функций, хранящихся в отдельных файлах на диске. Используется при создания собственных модулей расширения Perl.
AutoSplit
Содержит функции, разбивающие программу или модуль Perl на файлы, которые в последствии может обрабатывать модуль AutoLoader. Основное применение - построение библиотечных модулей Perl с автозагрузкой.
Benchmark
Содержит набор функций для проведения тестов на быстродействие выполнения отдельных фрагментов кода программы.
Carp
Содержит функции carp() и croak() - аналогии функций warn() и die(). Они отображают сообщение с указанием подпрограммы и номера ее строки, откуда вызываются эти функции, тогда как warn() и die() отображают номер строки в коде всей программы.
Config
Содержит набор функций для доступа к конфигурационной информации Perl, которую сценарий Configure занес в компьютер при установке Perl.
Cwd
Содержит функции для определения полного имени текущего рабочего каталога и его изменения. Эти функции работают надежнее и быстрее, чем соответствующие встроенные функции Perl.
DB_File
Позволяет использовать в программе Perl возможности, предоставляемые библиотекой Berkeley DB, предлагая единообразный интерфейс доступа к базам данных разных форматов.
Devel::SelfStubber
Генерация шаблонов (заготовок) для самозагружающихся модулей.
diagnostics
Позволяет отбражать более полные и развернутые диагностические сообщения компилятора и интерпретатора perl по сравнению с используемой по умолчанию краткой диагностикой.
DirHandle
Предоставляет объектный интерфейс к функциям работы с каталогами: opendir(), closedir(), readdir() и rewinddir().
DynaLoader
Определяет стандартный интерфейс Perl к механизмам механической загрузки, доступных на большинстве компьютерных платформ. Используется при создании собственных модулей расширения Perl.
Env
Perl поддерживает работу с переменными среды через ассоциативный массив %ENV. Модуль позволяет использовать переменные среды как обычные скалярные переменные Perl, используя имена этих переменных в качестве идентификатора переменных Perl. Например, $PATH, $HOME и т.д.
Exporter
Реализует метод import(), который обычно наследуется другими модулями вместо определения ими собственных методов импортирования своих определений и функций.
ExtUtils::Install
Предоставляет две функции install() и uninstall(), необходимые модулю ExtUtils::MakeMaker для выполнения зависимой от платформы установки и удаления расшерений Perl.
ExtUtils::Liblist
Содержит функцию ext(), которая преобразует список библиотек в строки, пригодные для включения в файл Makefile расширения Perl на текущей платформе.
ExtUtils::MakeMaker
Автоматизирует создание файла Makefile.pl, необходимого для построения расширения Perl.
ExtUtils::Manifest
Содержит функции для создания файла MANIFEST, который содержит список имен файлов (одно имя в строке с необязательным коментарием). Содержимое файла лего прочитать командой awk "{print $1}" MANIFEST. Этот модуль используется модулем ExtUtils::MakeMaker для создания списков файлов, содержащиф функции модуля.
ExtUtils::Miniperl
Содержит единственную функцию writemain(), получающую список катологов, содержащих архивные библиотеки, которые необходимы модулям Perl и которые следует включить в новый двоичный файл Perl. Обычно используется из файла Makefile, сгенерированного модулем ExtUtils::MakeMaker. программист непосредственно не работает с этим модулем.
ExtUtils::MkbootStrap
Единственная функция этого модуля mkbootstrap() обычно вызывается из файла Makefile соответствующего расширения и создает файл *.bs, необходимый для динамической загрузки в некоторых архитектурах операционных систем.
ExtUtils::Mksymlists
Единственная функция этого модуля Mksymlists() создает файлы, которые используются компановщиком некоторых операционных систем при создании совместно используемых (shared) библиотек для динамических расширений Perl. Обычно вызывается из файла Makefile, сгенерированного модулем ExtUtils::MakeMaker при построении расширения.
ExtUtils::MM_OS2
Перекрывает методы модуля ExtUtils::MM_Unix, используемые модулем ExtUtils::MakeMaker, для работы в операционной системе OS2.
ExtUtils::MM_Unix
Методы этого модуля используются модулем ExtUtils::MakeMaker. Программист никогда не работает с ним, если только он не улучшает модуль EtxUtils::MakeMaker в связи с его переносимостью.
ExtUtils::MM_VMS
Перекрывает методы модуля ExtUtils::MM_Unix, используемые модулем ExtUtils_MakeMaker, для работы в операционной системе VMS.
Fcntl
Этот модуль всего лишь трансляция заголовочного файла fcntl.h языка C, содержащего определения разных констант.
File::Basename
Функции этого модуля осуществляют синтаксический разбор полного имени файла, выделяя ключевые единицы. Можно использовать синтаксис имен файлов разных операционных систем. Например, в Unix ключевыми единицами будет путь, имя файла и расширение.
File::CheckTree
Единственная функция этого модуля validate() позволяет выполнять унарные именованные операции проверки над группой файлов, причем для каждого файла группы можно задать свои операции. Все операции проверки выполняются за одно обращение к функции.
File::Copy
Содержит единственную функцию copy(), которая копирует группу файлов за одно обращение.
File::Find
Содержит две функции поиска файлов по критерию, определенному в пользовательской подпрограмме. Функция find() отыскивает все файлы в каталогах заданного списка, последовательно переходя на поиск в каталогах нижнего уровня. Функция finddepth() также отыскивает файлы в каталогах заданного списка, но начинает поиск с последнего вложенного каталога, последовательно переходя на поиск в каталогах верхнего уровня.
File::Path
Содержит две функции mkpath() и rmtree(), которые, соответственно, создают и удаляют каталоги. В отличии от встроенной функции создания каталога mkdir() функция этого модуля создает каталоги верхнего уровня, если они не существуют. Функция удаления каталога, в отличие от встроенной функции rmdir(), удаляет любой, не обязательно пустой каталог, причем возвращает количество удаленных файлов.
FileCashe
Предоставляет функцию casheout(), которая открывает файл, не обращая внимания на установленное в соответствующей переменной среды количество одновременно открытых файлов. Ее использование для открытия файлов позволяет открыть произвольное количество файлов.
FileHandle
Предоставляет объектный интерфейс для работы с дескрипторами файлов.
GDBM_File
Позволяет программе Perl использовать возможности, предоставляемые библиотекой gdbm, распространяемой на условии лицензии GNU. См. описание модуля DB_File.
Getopt::Long
Реализует функцию GetOption(), позволяющую получать и обрабатывать опции командной строки, с которыми была запущена программа Perl. Параметры этой функции определяют синтаксис правильных опций: опция с обязательным/необязательным строковым/целым/числовым параметром, опция без параметров.
Getopt::Std
Содержит функции getopt() и getopts(), реализующие простой механизм обработки односимвольных опций (например, -v). Опции можно объединять в группы.
I18N::Collate
Предоставляет объекты, которым можно присвоить строки данных, и в дальнейшем сравнивать и упорядочивать их в соответствии с таблицей символов национального алфавита. Для правильной работы объектов и методов этого модуля необходимо иметь установленный модуль POSIX языка Perl. Системе также должны быть доступны POSIX-функции setlocale(3) и strxfrm(3).
integer
Использование в программе этого модуля предписывает компилятору применять арифметику целых чисел, начиная от строки вызова модуля (use integer;) до конца блока, в котором он вызван.
IPC::Open2
Содержит функцию open2(), которая порождает новый процесс и выполняет в нем команду, определяемую значением параметра функции. Ассоциируя со стандартными файлами ввода и вывода два дескриптора, позволяет программе Perl получать и передавать информацию для порожденного процесса.
IPC::Open3
Содержит функцию open3(), которая работает аналогично функции open2() модуля IPC::Open2 за исключением того, что открывается еще и третий файл для обмена информацией - стандартный файл вывода ошибок.
lib
Упрощает работу со специальной переменной @INC во время компиляции. Позволяет добавлять дополнительные каталоги поиска для операторов use и require.
Math::BigFloat
Позволяет создать объекты, представляющие вещественные числа с произвольным количеством цифр в мантиссе, и выполнять над ними арифметические операции.
Math::BigInt
Позволяет создавать объекты, представляющие целые числа с произвольным количеством цифр в мантиссе, и выполнять над ними арифметические операции.
Math::Complex
Позволяет создавать объекты, представляющие комплексные числа с произвольным количеством цифр в мантиссе, и выполнять над ними арифметические операции.
NDBM_File
Позволяет связывать функцией tie() хеши с файлами NDBM. См. описание модуля DB_File.
Net::Ping
Содержит функцию pingecho(), которая использует TCP-службу эхо (echo) (не ICMD) для определения, доступен ли удаленный хост.
ODBM_File
Позволяет связывать функцией tie() хеши с файлами ODBM. См. описание модуля DB_File.
overload
Позволяет осуществлять перегрузку стандартных операций Perl, т.е. при вызове в программе стандартной функции выполнять вместо предусмотренных стандартных операций методы каких-либо классов или собственные программы. Модуль постоянно изменяется, поэтому рекомендуем внимательно ознакомиться с документацией установленного на компьютере интерпретатора perl.
POSIX
Обеспечивает доступ ко всем (или почти всем) идентификаторам стандарта POSIX версии 1003.1. Для многих из этих идентификаторов реализованы Perl-подобные интерфейсы.
Pod::Text
Содержит функцию pod2text(), которая в программе Perl позволяет преобразовывать файл документации в формате POD в обычный текстовой ASCII файл. (В стандартную постановку Perl входит отдельная программа pod2text, которую можно запустить из командной строки).
Safe
Создает специальную область, в которой можно выполнить небезовасный код Perl. Эта область имеет собственное пространство имен и ассоциированную маску операций. Код, выполняемый в ней, не может ссылаться на переменные вне своего пространства имен. Компилируемый вне этой области код может поместить некоторые свои переменные в пространство имен этой области. Тогда они станут доступны коду, компилируемому в ней. Задаваемая маска операций позволяет исключить из выполняемого в безопасной области кода Perl потенциально опасные операции. По умолчанию любые операции доступа к системным ресурсам не выполняются в безопасной области.
SDBM_File
Позволяет связывать функцией tie() хеши с файлами SDBM. См. описание модуля DB_File.
Search::Dict
Содержит функцию look(), которая устанавливает указатель позиции в файле на строку, содержимое которой больше или равно некоторому строковому значению, переданному в функцию в качестве параметра.
SelectSaver
Позволяет создать объект SelectSaver, с помощью которого можно выбрать новый дескривтор файла, при этом старый дескриптор сохраняется и восстанавливается при уничтожении объекта SelectSaver.
SelfLoader
Этот модуль предоставляет механизм отсроченной загрузки функций, объявления которых расположены после лексемы _DATA_пакета, определенного в файле программы Perl. Функция будет автоматически загружена при первом к ней обращении. Этот модуль отличается от модуля AutoLoader, который работает с функциями в отдельных самостоятельных файлах.
Shell
Позволяет вызывать утилиты UNIX, доступные из командной строки, как будто они являются подпрограммами Perl. Параметры, включая ключи, передаются в утилиты как строковые данные.
sigtrap
Позволяет инициализировать обработчик сигнала для сигналов, переданных в качестве параметов модулю при его подключении оператором use.
Socket
Загружает определение констант и функций заголовочного файла socket.h языка C, а также специальных функций обработки некоторых структур данных, необходимых для работы с сетью.
strict
Позволяет ограничить небезопасные конструкции: переменные, ссылки и простые слова, не являющиеся заранее объявленными подпрограммами.
subs
Осуществляет объявление подпрограмм, чьи имена передаются в списке при подключении модуля в программу Perl. Это объявление позволяет вызывать в сценарии эти подпрограммы, задавая их параметры без скобок, даже до их определения. Можно перекрыть встроенные функции.
Symbol
Предоставляет функцию gensym(), которая создает анонимную глобальную переменную и возвращает ссылку на нее. Такую переменную можно использовать в качестве дескриптора файла или каталога. Функция gualify() уточняет имена переменных, добавляя к ним префикс, состоящий из имени пакета, где они определены, и двойного двоеточия "::".
Sys::Hostname
Предоставляет функцию hostname(), которая всеми возможными способами пытается получить имя хоста, последовательно вызывая разные системные программы.
Специальные переменные
$_Используется по умолчанию во многих функциях и операциях, в том числе :
- в качестве области поиска в операциях сопоставления с образцом m//, замены s/// и транслитерации y///, когда область поиска не задана явно операцией связывания =`;
- в качестве области ввода, когда условное выражение оператора while состоит из единственной операции ввода <>;
- в качестве параметра функции chop, split, print;
- в качестве переменной цикла в операторе foreach, если переменная цикла не задана явно.
$nn
Переменные $1, $2,... содержат подобразы из соответствующих наборов круглых скобок в последней успешной операции сопоставления с образцом.
$&
Часть строки, найденная при последней успешной операции сопоставления с образцом.
s`
Часть строки, стоящая перед совпавшей частью при последней успешной операции сопоставления с образцом.
$'
Часть строки, стоящая после совпавшей части при последней успешной операции сопоставления с образцом.
$+
Содержит подобразец из последнего набора круглых скобок в последней успешной операции сопоставления с образцом. Например, в результате операции
"1234.5678"=~m/(\d+)\.(\d+)/;
переменная $+ получит значение 5678.
$*
Устанавливает значение 0, чтобы в операциях сопоставления с образцом строка рассматривалась как мультистрока, состоящая из нескольких строк, розделенных символом новой.
Установить значение 1, чтобы в операциях сопоставления с образцом строка рассматривалась как одна строка. В этом случае метасимволу "." соответствует любой одиночный символ, в том числе и новой строки.
Устарела, для указанных целей рекомендуется в операциях сопоставления с образцом использовать ключ m и s, соответственно.
Значение по умолчанию равно 0.
$.
Номер последней строки, считанной из того файла, для которого выполнялась последняя операция чтения.
$/
Разделитель записей, считываемых из взодного файла. По умолчанию равен символу новой строки. Может состоять из нескольких символов. Если значение установлено неопределенным при помощи функции undef, то при чтении из входного файла границей записи является признак конца файла.
$|
Обычно данные, выводимые в файл функциями print или write, предварительно помещаются в буфер. Когда буфер заполняется, его содержимое записывается в файл. Буферизация повышает эффиктивность операций вывода. По умолчанию Perl использует буферизацию для каждого выходного файла, что ссответствует нулевому значению переменной $|. Чтобы ее отменить, следует выбрать файл при помощи функции select и установить значение переменной $| не равным 0.
$,
Разделитель полей выходных записей для функции print. Параметры функции print при выводе разделяются символом, который является значением переменной $,. По умолчанию этим значением является нулевой символ, т.е. выводимые элементы печатаются друг за другом. Если переменной $, присвоить, например, значение символа новой строки, то каждый параметр функции print будет напечатан в отдельной строке.
$\
Разделитель выходных записей для функции print. Добавляется в конец списка параметров функции print. По умолчанию равен нулевому символу. Если установить его значение равным символу новой строки, каждый вызов функции print будет завершаться переводом на новую строку.
$"
Когда переменная-массив, заключенная в двойные кавычки, передается в качестве параметра функции print, ее элементы при выводе разделяются последовательностью символов, содержащейся в переменной $". По умолчанию ее значением является символ пробела.
$;
Символ, используемый в качестве разделителя индексов при эмуляции многомерных массивов. Значение по умолчанию \034. Интерпретатор, встретив запись $array{"bim","bom"}, преобразует ее к виду $array{"bim" . $; . "bom"}.
$#
Формат, используемый по умолчанию для вывода чисел. Значение по умолчанию %20g, что означает представление выводимых чисел в формате с 20 знаками после десятичной точки. Не рекомендуется использовать в версиях Perl 5 и старше.
$%
Каждый файл, открываемый программой Perl для ввода, имеет свою копию переменной $%, в которой храниться номер текущей страницы. В каждый момент значение переменной $% равно номеру текущей страницы текущего файла вывода.
$=
Длина текущей страницы текущего файла вывода. По умолчанию значение равно 60.
$-
Число строк, оставшихся на текущей странице текущего файла вывода.
$~
Имя текущего формата для текущего файла вывода. Значением по умолчанию является имя дескриптора этого файла.
$^
Имя текущего формата заголовка страницы для текущего файла вывода. Значением по умолчанию является имя дескриптора файла, к которому добавлен суффикс _TOP.
$:
Текущее множество символов переноса слова.
Если поле вывода в формате начинается с символа ^, то интерпретатор помещает в это поле вводимое слово только тогда, когда в нем достаточно места для этого слова. Чтобы определить, может ли слово поместится в поле формата, интерпретатор подсчитывает число символов между следующими выводимым символом и следующим символом переноса слова. Символ переноса слова обозначает или конец слова, или место, где слово может быть разбито на две части. По умолчанию значением переменно $: является строка, состоящая из символов пробела, новой строки и дефиса:" \n-".
$^L
Признак перехода на новую страницу, используемый в шаблонах формата. Значение по умолчанию \f.
$^A
Аккумулятор, используется функцией write() для временного хранения выводимых отформатированных строк.
$?
Информация, возвращаемая последней операцией ``, операцией закрытия програмного канала или вызовом функции system. Представляет 16-битное целое число, состоящее из двух частей по 8 бит. Старшие 8 разрядов содержат код завершения процесса, младшие - дополнительную системную информацию о завершении процесса.
$!
Некоторые функции Perl обращаются к функциям операционной системы. Если системная функция генерирует ошибку, код ошибки сохраняется в переменной $!. В числовом контексте переменная $! дает код системной ошибки, в строковом контексте - соответствующее текстовое сообщение.
$^E
Информация о системной ошибке, специфическая для текущей операционной системы. Отличается от переменной $! для платформ Win32, OS/2 и VMS, для остальных платформ эти переменные совпадают.
$@
Сообщение об ошибке, сгенерированное интерпретатором в результате последнего вызова функции eval(). Нулевое значение означает, что функция eval() завершилась успешно.
$$
Идентификатор процесса выполняющегося интерпретатора perl.
$<
Действительный идентификатор пользователя данного процесса.
$>
Эффективный идентификатор пользователя данного процесса.
$(
Действительный идентификатор группы данного процесса.
$)
Эффективный идентификатор группы данного процесса.
$0
Имя файла, содержащего выполняющуюся Perl-программу.
$[
Индекс первого элемента массива и первого символа в подстроке. Значение по умолчанию 0. Не рекомендуется изменять.
$]
Номер версии интерпретатора perl.
$^D
Текущее значение флагов отладки, которые передаются при вызове интерпретатора с ключом -D.
$^F
Максимальный номер дескриптора системного файла. Обычно системными файлами считаются стандартные файлы SYDIN, STDOUT, STDERR, которые в OC UNIX имеют дескрипторы 0, 1, 2 соответственно. Поэтому значением по умолчанию является 2.
$^H
Значение, содержащее информацию о том, какие проверки синтаксиса заданы дерективой use strict.
$^I
При вызове интерпретатора Perl с флагом -iextension входные файлы, полученные при помощи операции <>, можно редактировать непосредственно на месте. При этом для резервной копии файла используется имя с расширением extension. Это расширение и сохраняется в переменной $^I. Если ее значение сделать неопределенным при помощи функции undef, редактирование на месте будет запрещено.
$^M
Эта переменная используется только в специально скомпилированной версии интерпретатора Perl для создания резервного буфера памяти.
$^O
Имя операционной системы, в которой была осуществлена компиляция данного интерпретатора Perl.
$^P
Содержит внутренние флаги отладчика Perl. Если значение равно 0, режим отладки отключен.
$^R
Результат последнего удачного выполнения конструкции (?{code}), представляющий расширенный синтаксис регулярного выражения.
$^T
Время, когда была запущенна программа. Измеряется в секундах относительно 1970 года.
$^W
Значение ключа командной строки -w. Значение 0 подавляет вывод предупреждающих сообщений о возможных синтаксических и других ошибках, значение 1 - разрешает.
$^X
Имя, по которому была вызвана выполняющаяся программа.
$ARGV
Имя текущего файла при чтении из <>.
@ARGV
Содержит аргументы командной строки выполняющейся программы.
@INC
Содержит имена каталогов, в которых следует искать сценарии Perl, подлежащие выполнению в конструкциях do filename, require или use. Первоначально содержит: имена каталогов, переданные при запуске интерпретатору perl в качестве ключа -I; имена библиотечных каталогов по умолчанию (зависят от операционной системы); символическое обозначение текущего каталога ".".
@_
Внутри подпрограммы содержится список переданных ей параметров.
%INC
Содержит по одному элементу для каждого файла, подключенного при помощи функции do или require. Ключем является имя файла в том виде, как оно указано в качестве аргумента функции do или require, а значением - его полное маршрутное имя.
%ENV
Содержит текущие значения переменных среды.
%SIG
Служит для настройки обработки сигналов. Ключем является мнемоническое имя сигнала, значением - либо строка "IGNORE" (игнорировать сигнал), либо строка "DEFAULT" (восстановить реакцию на сигнал по умолчанию), либо строка, задающая квалифицированное имя подпрограммы-обработчика сигнала.
@EXPORT
Содержит имена, которые пакет экспортирует по умолчанию.
@EXPORT_OK
Содержит имена, которые пакет экспортирует по запросу вызывающей программы.
ARGV
Дескриптор, ассоциированный с текущим файлом ввода, из которого осуществляется считывание при помощи операции <>. Последовательно ассоциируется с файлами, переданными в программу в качестве аргументов командной строки, имена которых сохраняются в массиве @ARGV.
DATA
Специальный дескриптор файла, ассоциированный с частью файла, которая расположена после лексемы _END_. Чтение из дескриптора DATA означает считывание строки, расположенной в файле сразу за лексемой _END_, что позволяет поместить программу и данные в один файл.:
#!/usr/local/bin/perl
$line = <DATA>;
print ("$line");
_END_
Эта строка расположена в одном файле с Perl-программой.
STDERR
Дескриптор стандартного файла диагностики, который обычно связан с экраном.
STDIN
Дескриптор стандартного файла ввода, обычно ассоциированный с клавиатурой.
STDOUT
Дескриптор стандартного файла вывода, обычно ассоциированный с экраном.