Это довольно просто:
sub infix:<▶> ($left, $right) {
$left."$right"()
}
# Example:
class Foo {
method bar { "hello" }
}
my $a = Foo.new;
say $a ▶ 'bar'
# hello
sub infix:< >
определяет новые инфиксные операторы (другие варианты: prefix
, postfix
, circumfix
и postcircumfix
, последние два требуют открывающая и закрывающая части, например <( )>
для открывающих и закрывающих круглых скобок).
($left, $right)
, как следует из названия, обрабатывает значения левой и правой стороны.
Для вызова метода на основе строки вы используете структуру ." "()
с именем метода в кавычках и последующими круглыми скобками - даже если аргументов нет. В этом случае мы просто вставляем переменную для базовой c интерполяции, хотя возможны и более сложные операции.