Некоторые сведения о Perl 5/Встроенные функции
Perl 5 предоставляет широкий спектр встроенных функций, часть из которых доступна с момента начала исполнения Perl-программы,[1] в то время как другие могут требовать подключения (require
, use
) дополнительных встроенных (поставляемых как часть Perl 5) модулей. В данном разделе мы рассмотрим, в первую очередь, функции первой из этих групп.
Управление выполнением
правитьФункция die
вызывает исключение. В случае, если исключение не перехвачено (например, функцией eval
), оно приведет к аварийному завершению текущей Perl-программы. Например:
my $points = throw_dice ()
or die ("Out of luck");
Функция eval
выполняет блок, перехватывая исключения. Результат функции eval
— результат последнего вычисленного выражения. Особая переменная $EVAL_ERROR
($@
) устанавливается в пустую строку при успешном завершении блока, или же содержит перехваченное исключение в противном случае.[2] Например:
print (eval { 42; }, "\n");
## → 42
eval { print "Ouch!\n"; die ("Oops!\n"); };
## → Ouch!
use English;
print ($EVAL_ERROR, "\n");
## → Oops!
Функция exit
позволяет завершить текущий процесс (как правило: Perl-программу), указав числовой код завершения (по-умолчанию: 0
.) Обычные соглашения трактуют код завершения 0
как успех, любой другой код означает ошибку исполнения. Обычно, для аварийного завершения программы имеет смысл применять функцию die
.
Числовые функции
правитьПриведение форм
правитьhex
- разбор строки, содержащей шестнадцатеричное представление числа; например,
hex ("22")
→ 34 (= 22₁₆); oct
- разбор двоичной (если начинается с
0b
), шестнадцатиричной (0x
) или восьмеричной (во всех прочих случаях) записи числа; ведущие пробелы игнорируются; так,oct (" 0b10101")
→ 21; int
- приводит аргумент к целому типу с отсечением дробной части (другими словами: с округлением к нулю); так, значением
int (-1.99)
окажется −1; в вычислениях, как правило, более уместны функции
ceil
иfloor
модуляPOSIX
[3]; chr
,ord
- получение строки, состоящей из символа с заданным кодом, и получение кода первого символа строки; например:
chr (0x263a), ord ("§")
→("☺", "167")
.
Интерфейс к стандартной математической библиотеке
править
Perl 5 предоставляет (хотя и несколько ограниченный — если не использовать модуль POSIX
[3]) интерфейс к стандартной математической библиотеке:[4]
exp
, log
, sqrt
- возведение основания натуральных логарифмов в указанную степень, натуральный логарифм и квадратный корень аргумента, соответственно;
- отметим, что возвести произвольное число в произвольную степень можно оператором
**
, соответствующем функции pow
[5] стандартной библиотеки;
cos
, sin
- косинус и синус угла в радианах;
atan2
- арктангенс отношения первого аргумента ко второму (другими словами: угол в радианах между вектором с заданными — y, x — координатами и осью абсцисс);
- отметим, что ввиду равенства 𝜋 = 4 arctg 1, приближенное значение для константы 𝜋 можно получить как
my $pi = 4 * atan (1, 1);
(или же можно воспользоваться функцией pi
модуля Math::Trig
[6].)
Ввод-вывод
править
Функция print
(равнозначна методу print
для объектов класса IO::Handle
[7]) последовательно выводит аргументы в указанный поток (по-умолчанию: на стандартный вывод), разделяя их разделителем полей $OFS
($OUTPUT_FIELD_SEPARATOR
, $,
; по-умолчанию: пустая строка) и завершая вывод разделителем записей $ORS
($OUTPUT_RECORD_SEPARATOR
, $\
; по-умолчанию: пустая строка.)[8] Например:
use English;
my ($a, @ll)
= ("a", qw (little lamb));
local ($OFS, $ORS)
= (" ", "\n");
print (qw (Mary had), $a, @ll);
## → Mary had a little lamb
Функция warn
предназначена для вывода предупреждений. Управлять их обработкой можно поместив ссылку на нужную функцию в элемент __WARN__
особой таблицы %SIG
[9]; по-умолчанию, предупреждение будет выведено на стандартный поток ошибок подобно функции die
. (В отличие от последней, warn
не приводит, разумеется, к аварийному завершению кода.) Например:
warn ("It makes me worry\n");
## (STDERR) → It makes me worry
Ссылки
править
- ↑ https://metacpan.org/pod/perlfunc
- ↑ https://metacpan.org/pod/perlvar#EVAL_ERROR
- ↑ а б https://metacpan.org/pod/POSIX
- ↑ http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/math.h.html#tag_13_25_07
- ↑ http://pubs.opengroup.org/onlinepubs/9699919799/functions/pow.html
- ↑ https://metacpan.org/pod/Math::Trig
- ↑ https://metacpan.org/pod/IO::Handle
- ↑ https://metacpan.org/pod/perlvar#Variables-related-to-filehandles
- ↑ https://metacpan.org/pod/perlvar#SIG