Ключевые слова 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.