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

Ссылки править

  1. https://metacpan.org/pod/perlfunc
  2. https://metacpan.org/pod/perlvar#EVAL_ERROR
  3. а б https://metacpan.org/pod/POSIX
  4. http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/math.h.html#tag_13_25_07
  5. http://pubs.opengroup.org/onlinepubs/9699919799/functions/pow.html
  6. https://metacpan.org/pod/Math::Trig
  7. https://metacpan.org/pod/IO::Handle
  8. https://metacpan.org/pod/perlvar#Variables-related-to-filehandles
  9. https://metacpan.org/pod/perlvar#SIG