Некоторые сведения о 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