Привет, сегодня продолжаю перевод документа Perl6::Perl5::Differences.
Perl6::Perl5::Differences - Отличия между Perl 5 и Perl 6
Операторы
Полный список операторов задокументирован на страницах [S03]: "Изменения синтаксиса операторов Perl 5" и [S03]: "Новые операторы".
Некоторые ключевые аспекты:
Новая форма интерполяции оператора кавычек qw()
Было: qw(foo) Стало: <foo> Было: ("foo", (split ' ', $bar), "bat") Стало: <<foo $bar bat>>
Операторы кавычек теперь имеют модификаторы, которые могут быть использованы для изменения их интерпретации ( подобно модификаторам регулярных выражений в Perl 5), с их помощью можно даже определить свои собственные операторы кавычек.
Обратите внимание, что подпись () теперь является вызовом подпрограммы,
таким образом вместо qw(a b)
надо написать qw<a b> или qw[a b]
(если вам не симпатична простая запись <a b>).
Другие важные изменения в операторах
Объединение строк теперь осуществляется символом ~.
Сопоставление регулярному выражению производится оператором "умного сопоставления" - ~~,
Perl 5 оператор сопоставления =~ больше не используется.
if "abc" ~~ m/a/ { ... }
| и & как инфиксные операторы теперь объединяют конструкции. Операторы
бинарный AND и бинарный OR разделены на строковые и числовые,
то есть ~& - бинарный строковый AND, +& бинарный
числовой AND, ~| - бинарный строковый OR и.т.д.
Было: $foo & 1; Стало: $foo +& 1;
Побитовые операторы в настоящее время с префиксом +, ~ или ? в зависимости от типа данных: число, строка или логическое значение.
Было: $foo << 42; Стало: $foo +< 42;
Операторы присваивания изменены таким же образом:
Было: $foo <<= 42; Стало: $foo +<= 42;
Скобки не создают списки, они просто группируют. Списки формируются оператором запятой. У неё приоритет выше, чем у оператора присвоения списка, это позволяет с правой стороны указывать список без скобок.
my @list = 1, 2, 3; # В @list на самом деле 3 элемента
Оператор стрелка -> для разыменовывания больше не используется. Так как
все является объектом, а разыменовывающие скобки - это просто вызовы метода
с синтаксическим сахаром, можно сразу использовать соответствующую
пару скобок для индексирования либо вызова метода:
my $aoa = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]; say $aoa[1][0]; # 4 my $s = sub { say "hi" }; $s(); # или $s.(); $lol.[1][0]
Leave a comment