Прелесть 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 — это разновидность, не делающая перевод строки.
Что из 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