Изучаем Perl 6: установка Rakudo Star и первый скрипт

4 сентября 2012

Вы, бесспорно, уже наслышаны о 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.

Метки: , .


Вы можете прислать свой комментарий мне на почту, или воспользоваться комментариями в Telegram-группе.