Перегрузка операторов

Ключевые слова prefix, infix и postfix позволяют опредить новые операторы или переопределить существующие.
Синтаксис напоминает создание обычных функций.

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

sub infix: ($a, $b) {$a — $b};
say 7 minus 9;

Не знаю, зачем это может потребоваться, но перегрузка работает: программа выводит на печать -2.

sub postfix:<@> ($power) {2 ** $power;}
say 7@;

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

Допустимо и буквы, например, определяя оператор round (по сути как и обычную функцию):

sub prefix: ($x)
{
my $i = int ($x);
return abs ($x — $i) >= 0.5 ?? $i + 1 :: $i;
}

say round 4.3;
say round 4.7;

Две последние строки напечатают соответственно 4 и 5.