Perl 6 позволяет создавать кастомные операторы. По сути это обычная функция с необычным именем. Мы рассмотрим типы операторов с следующий раз, а сегодня создадим простой префикс.
Префиксный оператор — это оператор, который стоит перед объектом (переменной, строкой, и т. д.). Пример префиксного оператора — унарный минус или префиксный инкремент:
-$x; ++$x;
Давайте создадим оператор §, который просто превращает строку в строку из заглавных букв.
sub prefix:<§>($str) { $str.uc }
Синтаксис похож на создание обычной функции, но надо указать тип оператора (prefix в нашем случае) и, собственно, сам оператор. Унарный оператор требует одного операнда, который здесь передается как параметр функции.
Попробуем применить только что созданный оператор (прямо в той же программе):
say §'hello, world!';
На печати появляется HELLO, WORLD!, что и требовалось.
Допускается включать фантазию и создавать не только текстовые операторы, например:
sub prefix:<🔊>(Str $str) { $str.uc } say 🔊'hello, world!';
Тема по созданию операторов еще не исчерпана, до встречи в одном из следующих выпусков!
Почему в первом примере ($str), а во втором (Str $str)?
Просто для разнообразия. Чтобы не работало 🔊123, например.