Rakudo * perl6のインストール
markov sequenceのデモを紹介したいが、まず最新の環境がないといけないので、インストールのおさらいから。
$ w3m https://github.com/rakudo/star/downloads/
# 注意: むやみにコピーせず上のページで最新のものを選んでインストールしましょう
$ wget --no-check-certificate https://github.com/downloads/rakudo/star/rakudo-star-2010.11.tar.gz
$ tar xzf rakudo-star-2010.11.tar.gz
$ cd rakudo-star-2010.11/
$ perl Configure.pl -gen-parrot
$ make
$ make install
$ install/bin/perl6
Perl6にはCPANに相当するモジュール管理ネットワークがまだない。各貢献者のgithubのrepositoryを登録してそこからモジュールをダウンロードしてインストールするneutroというコマンドがある。ここではmarkov sequenceのデモに必要なList::Utilsをインストールしてみる。
まずはneutro自体のインストール
$ git clone git://github.com/tadzik/neutro.git
$ cd neutro
$ PERL6LIB=tmplib bin/neutro .
$ PATH=${PATH}:~/src/rakudo-star-2010.11/install/bin/
$ which perl6
$ PERL6LIB=tmplib bin/neutro .
モジュールのリスト
これはupdateというモジュールをインストールするんじゃなくて、モジュールリストのキャッシュを更新しているんだと思う。コマンドとモジュール名のネームスペースが一緒になっていてまぎらわしい。
$ bin/neutro update
$ bin/neutro list | grep -i list
List::Utilsをインストール
$ bin/neutro List-Utils
$ perl6
> use List::Utils;
_block78
> sliding-window((1,2 ... 10), 3).perl
([1, 2, 3], [2, 3, 4], [3, 4, 5], [4, 5, 6], [5, 6, 7], [6, 7, 8], [7, 8, 9], [8, 9, 10])
ライブラリは~/.perl6/下に入る
$ find /home/tengu/.perl6/ | grep List
/home/tengu/.perl6/lib/List
/home/tengu/.perl6/lib/List/Utils.pir
/home/tengu/.perl6/lib/List/Utils.pm
引数のタイプによって分けて関数を定義をするmultiple dispatchが見れて面白い。http://www.programmersheaven.com/2/Perl6-FAQ-Multi#what
~/.perl6/lib/JSON/Tiny.pm