Perl 6 / все про say

Прелесть say

Если вы когда-либо задумывались над тем, с чего начинать обучение языку Perl 5, то после выхода 5.10 могли возникнуть противоречивые чувства. С одной стороны, программа «Hello, World!» должна быть максимально короткой, с другой — максимально правдивой.

Для того, чтобы воспользоваться функцией say, в Perl 5.10 необходимо либо подключить соответствующий механизм (use feature 'say'), либо модуль Modern::Perl, либо записать программу в опции -E командной строки. Способов много, но каждый требует дополнительных пояснений. Даже простой print скорее всего потребует перевода объяснять, что такое \n.

Perl 6 лишен такого груза ответственности первой главы. Программа «Hello, World!» на Perl 6 выглядит так, как и должна: коротко и по делу:

say "Hello, World!";

В первой программе должен быть именно вызов say. И только потом нужно сказать, что print — это разновидность, не делающая перевод строки.

say, print, education — 24 августа 2009

Что из 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).

perl510, say, given, switch, when, default, state — 24 ноября 2007