Вы, бесспорно, уже наслышаны о Perl 6 . Многие ошибочно полагают, что этот язык находится в ранней стадии разработки и появится только лет через пять. Но в действительности попробовать Perl 6 можно уже сегодня и, более того, он уже вполне пригоден для написания реальных программ.

Дополнение: В октябре 2019 язык Perl 6 был переименован в Raku.

Глоссарий

Для начала разберемся с терминологией:

  • Perl 6 — язык программирования, дальнейшее развитие Perl 5.
  • Rakudo — компилятор Perl 6. Поскольку язык Perl 6, в отличие от Perl 5 , имеет спецификацию, компиляторов и интерпретаторов у него много. На сегодняшний день Rakudo является среди них наиболее актуальным.
  • Parrot — виртуальная машина, выполняющая скрипты, скомпилированные Rakudo. В отличие, например, от JVM, Parrot заточен под интерпретируемые языки программирования. Помимо Perl 6, на Parrot могут выполняться программы на Python, Ruby, Perl 5 и других языках.
  • PBC — parrot bytecode, байткод виртуальной машины Parrot.
  • PASM — ассемблер для Parrot, низкоуровневый язык, который при компиляции превращается в PBC.
  • PIR — parrot intermediate representation, расширенный PASM.
  • Panda — программа для установки модулей Perl 6, аналог утилит cpan, pip и cabal.
  • Rakudo Star (или Rakudo*) — дистрибутив Perl 6, включающий в себя Parrot, Rakudo, Panda и некоторые библиотеки Perl 6. Если провести аналогию с миром Haskell , то Rakudo Star — это то же самое, что Haskell Platform.

Следует также отметить активно развивающийся компилятор Perl 6 под названием Niecza . Он позволяющий запускать программы на Perl 6 под CLR. Однако по моим ощущениям, в настоящее время пользоваться Niecza еще рановато.

Установка Rakudo Star

Рекомендуется собирать Rakudo Star из исходников, поскольку бинарные пакеты для Linux и других ОС имеют свойство редко обновляться. На момент написания этих строк последняя версия Rakudo Star имела номер 2012.08 . Но вам лучше ознакомиться со списком доступных пакетов на GitHub и взять оттуда самый свежий релиз. Там же вы найдете MSI-пакет для Windows.

Установка под *nix происходит следующим образом:

wget http: // github.com / downloads / rakudo / star / rakudo-star- 2012.08 .tar.gz
tar -xvzf rakudo-star- 2012.08 .tar.gz
cd rakudo-star- 2012.08
perl Configure.pl —gen-parrot —prefix = $HOME / perl6
make
make install

Затем прописываем $HOME/perl6/bin и $HOME/.perl6/bin в переменную окружения $PATH. Проверяем:

perl6 -e ‘say «Hello!»‘
panda update
panda list
panda install p6doc
panda install XML::Parser::Tiny
p6doc XML::Parser::Tiny

Поздравляю, Rakudo Star установлен!

Настраиваем подсветку синтаксиса в VIM

Я все еще не признаю никаких IDE и весь код пишу в VIM . Добавить в него подсветку синтаксиса Perl 6 можно следующим образом:

mkdir -p ~ / .vim / syntax
cd ~ / .vim / syntax /
wget http: // raw.github.com / petdance / vim-perl / master / syntax / perl6.vim
mkdir -p .. / ftdetect /
cd .. / ftdetect /
echo ‘au BufRead,BufNewFile *.p6 set filetype=perl6’ > p6.vim

Если вы не разделяете моей любви к VIM, возможно, вам придется по душе интерактивная среда разработки Padre с плагином Padre::Plugin::Perl6.

Пишем простенький скрипт

Напишем скрипт, скачивающий веб-страничку и выводящий ее код в stdout:

#!/usr/bin/env perl6

use v6 ;
use LWP :: Simple ;

my $html = LWP :: Simple . get ( ‘http://perl6.org’ ) ;
say $html ;

Говорим:

chmod u+x get.p6
. / get.p6

… и вуаля — перед нами HTML-код главной страницы perl6.org.

Теперь попробуйте написать что-нибудь самостоятельно. Например, сохраните главную страницу perl6.org в файл или получите ее заголовок с помощью регулярных выражений . Найдите сайт, отдающий данные в формате JSON или XML и пропарсите эти данные с помощью JSON::Tiny или XML::Parser::Tiny соответственно. Кстати, не могу не отметить, что последний модуль написан мной 🙂

Вообще, нет лучшего способа изучения Perl 6, чем взять какой-нибудь модуль на Perl 5 и переписать его на Perl 6. Только следует поторопиться, потому что число модулей для Perl 6 растет с неистовой скоростью . На момент написания этих строк их было уже больше сотни. Неплохо для языка, который, можно сказать, еще даже не появился на свет, не так ли?

Ссылки по теме

В качестве источников дополнительной информации я бы рекомендовал следующие:

А вы уже сели за изучение Perl 6? Что в целом думаете об этом языке?

Дополнение: В продолжение темы — грамматики в Perl 6 .

EnglishRussianUkrainian