Что из Perl 6 есть в Perl 5.10

17 ноября вышел релиз-кандидат дистрибутива Perl версии 5.10, 24 ноября о выходе портированных бета-версий 5.10 сообщила компания ActiveState.

Perl 5.10 теперь умеет выполнять некоторые функции, которые запланированы в Perl 6, а именно, say, given/when/default, state и операторы ~~ и //. Чтобы использовать новые функции, необходимо явно сообщить об этом компилятору с помощью прагмы use feature qw(switch say state).

Кроме того, появились многочисленные дополнения в синтаксисе регулярных выражениях. Подробности новых возможностей описаны в документе perl5100delta и на слайдах презентации «Новое в Perl 5.10», сделанной для Moscow.pm.

Следует, однако, обратить внимание, что новые функции не всегда соответствуют синтаксису Perl 6, например, после ключевых слов given и when по-прежнему следует ставить круглые скобки. Например:

given ($tag) {
when (‘perlrus08’) {
say ‘2008’;
}
default {
say ‘Other’;
}
}
Функция say в Perl 5.10 по-прежнему работает как традиционная встроенная функция-оператор, и не может быть вызвана как метод. Кроме того, при отсутствии явно переданных аргументов она использует переменную по умолчанию $_, в то время как в Perl 6 этого не происходит.

Например, код say for 1..3, выполненный компилятором Perl 5.10, напечатает три строки с числами от 1 до 3, а Perl 6 сделает лишь три перевода строки (чтобы вывести значения, нужно вызвать метод на переменной цикла, написав .say или $_.say).