Pugs で Perl 6 入門 (1)

Perl 6をちょっと触ってみようと思っても日本語の説明が少なく敷居が高いので,Perl 6の入門文書を書いてみようと思います。

読者としてはCやJavaRubyなどの手続き型プログラミング言語の経験がある方を想定しています。Perl 5以前のPerlプログラミングの経験は必要ではありません。ただし,Perl 5とPerl 6の違いは注記として補足していきます。

週1での更新を目指してみます。

Perl 6 って何?

Perl 6は次世代のプログラミング言語です。Perl 6の設計のベースとなっているPerl 5は,効率的で強力な「実際に問題を解決するための」ハッカー御用達のプログラミング言語です。Perl 6は,近年の数々のプログラミング言語の発展を受け,他のプログラミング言語の素晴らしい機能をいいとこ取りしながら一から再設計されたインタプリタ型言語で,現代のプログラミング技法の知見が結集された成果です。

ただし,2006年現在,Perl 6の仕様はまだ固まっていません。Perl 6が安定して普通に使われるようになるのはおそらく2010年前後でしょう。しかし,すでにPerl 6を実装した処理系は存在しており,実際にPerl 6のプログラムを書いて動かすことができます。ですから,本物のハッカー達がどのような機能を求めているのか,そしてこれからのプログラミング言語がどのように発展していくのかを学び知ることは十分にできます。

なお,現在世間一般で使われているPerlはバージョン5です。Perl 6は従来のPerl 5とは互換性がありませんので,Perlで書かれた従来のプログラムはPerl 6では動きません。

Pugs のインストール

現在Perl 6を動かすための処理系としてPugsがあります。PugsHaskellというプログラミング言語で作られています。2006年11月14日現在のPugsの最新バージョンは6.2.13で,この記事でもPugs 6.2.13で動作するPerl 6を対象としています。

Windows

ここではWindows上でPugsコンパイルしてインストールする手順を説明しています。コンパイルには多少時間がかかります(1時間程度)。もしコンパイルが面倒な方は http://jnthn.net/perl6/ からWindows用バイナリ pugs-win32.zip をダウンロードすることができます。ただし,(未確認ですが)その場合はPerl 5モジュールが使えないと思うので注意してください。

まず,はじめに最新の ActivePerlGlasgow Haskell Compiler (GHC) をインストールしておきます。2006年11月14日現在の最新版はActivePerl 5.8.8とGHC 6.6で,ActivePerlは5.8.x系,GHCは6.6が推奨です。両方ともMSIインストーラが提供されています。それぞれ perl.exe と ghc.exe には環境変数PATHのパスを通しておいてください。

もしパス中にバージョン1.50以外の nmake があればコンパイルに失敗する可能性があります。もしPATH中に nmake.exe がなければ勝手にマイクロソフトのWebサイトからダウンロードして perl.exe と同じフォルダにインストールするので,できれば nmake.exe がPATH中にない方がよいと思います。

PerlGHCがインストールできれば,CPANhttp://search.cpan.org/dist/Perl6-Pugs/ からPugsソースコード (Perl6-Pugs-6.2.13.tar.gz) をダウンロードし,tarballを展開します。圧縮展開のソフトウェアは 7-Zip が個人的におすすめです。なお,展開したパス中に日本語が使われているとGHCコンパイルにこけるので,「デスクトップ」などは避けてください。同様にスペースも避けた方がいいでしょう。

コマンドプロンプトを開いて,展開した Perl6-Pugs-6.2.13 フォルダに移動し,まず set LANG=C を実行し,続いて perl Makefile.PL を実行します。うまくいけば,次に nmake でコンパイルします。

もしインストール中に Undefined subroutine &main::UpdateHTML_blib called at -e line 1. というエラーが出る場合は,ActivePerlをインストールしたフォルダ内の site/lib/ActivePerl/DocTools.pm が古いまま残ってしまっているので,lib/ActivePerl/DocTools.pm が存在するのを確認して site/lib の方の DocTools.pm や DocTools フォルダを削除すればOKです。

nmake が無事終われば,通常は次に nmake test を実行しますが,テストには時間がかかるので省いても問題ないでしょう。そのまま nmake install を実行してインストールしてください。nmake install が終了すれば完了です。perl.exe と同じフォルダに pugs.exe などがインストールされます。pugs -v と打って次のような出力がなされればOKです。

C:\Documents and Settings\kenzi>pugs -v
   ______
 /\   __ \
 \ \  \/\ \ __  __  ______  ______     (P)erl6
  \ \   __//\ \/\ \/\  __ \/\  ___\    (U)ser's
   \ \  \/ \ \ \_\ \ \ \/\ \ \___  \   (G)olfing
    \ \__\  \ \____/\ \____ \/\_____\  (S)ystem
     \/__/   \/___/  \/___/\ \/____/
                       /\____/               Version: 6.2.13
                       \/___/    Copyright 2005-2006, The Pugs Contributors
--------------------------------------------------------------------
 Web: http://pugscode.org/           Email: perl6-compiler@perl.org

Pugs 6.2.12以前を使っていた方: Pugs 6.2.13以降は標準でperl5がembedされ,parrotがembedされませんので,perl5だけをembedする場合は環境変数PUGS_EMBEDを設定する必要はありません。

Fedora Core

perl -v でPerl 5の処理系がインストールされているか確認できます。Perlがインストールされていなければyumyum install perl とインストールすればいいでしょう。5.8.xがあれば大丈夫です。

次に Glasgow Haskell Compiler (GHC) をインストールします。http://www.haskell.org/fedora/ を使って yum れば簡単です... といいたいところなのですが,あまりメンテされていないようです。まずは http://blog.hide-k.net/archives/2006/04/fedorapugs.php あたりを参考に yum install ghc すればGHC 6.4.1(Fedora Core 4の場合)かGHC 6.4.2(Fedora Core 4の場合)が入ると思います。ghc --version でインストールの確認とバージョンの確認ができます。なお,2006年11月14日現時点での最新バージョンはGHC 6.6なのでGHC 6.4.xは少し古く,将来のPugsではGHC 6.4系のサポートが打ち切られるので,そのときは気をつけましょう。

次に hs-plugins というライブラリをインストールします。Fedora Core 4でGHC 6.4.1がyumで入っていれば,yum install hs-plugins-641 でインストールできます。そうでなければ,CPUがx86であれば少し古いですがFC4用のリポジトリのhs-pluginsページからhs-plugins-0.9.8-1.i386.rpmをダウンロードし,rpm -ivh hs-plugins-0.9.8-1.i386.rpm でインストールします(最新のhs-plugins 0.9.10を使いたい場合はこのページあたりを参考にソースコードからインストールすればいいでしょう)。もし libreadline.so.4 がないと怒られた場合は,yum install compat-readline43 などで readline4 をインストールしてから hs-plugins をインストールします。

PerlGHCがインストールできれば,CPANhttp://search.cpan.org/dist/Perl6-Pugs/ からPugsソースコード (Perl6-Pugs-6.2.13.tar.gz) をダウンロードし,tar zxf Perl6-Pugs-6.2.13.tar.gz といった感じでtarballを展開します。展開した Perl6-Pugs-6.2.13 フォルダに移動し,export LANG=C をしてから perl Makefile.PL を実行します。何も文句が言われずに Enter 'make' to build Pugs. と促されたら,促されるとおりに make しましょう。

make が無事終われば,通常は次に make test を実行しますが,テストには時間がかかるので省いても問題ないでしょう。そのまま make install を実行してインストールしてください。make install が正常に終了すれば,pugs -v と打って次のような出力がなされればインストール成功です。

[deq@l243-56]~% pugs -v
   ______                                                           
 /\   __ \                                                        
 \ \  \/\ \ __  __  ______  ______     (P)erl6                 
  \ \   __//\ \/\ \/\  __ \/\  ___\    (U)ser's           
   \ \  \/ \ \ \_\ \ \ \/\ \ \___  \   (G)olfing      
    \ \__\  \ \____/\ \____ \/\_____\  (S)ystem           
     \/__/   \/___/  \/___/\ \/____/                           
                       /\____/               Version: 6.2.13
                       \/___/    Copyright 2005-2006, The Pugs Contributors
--------------------------------------------------------------------
 Web: http://pugscode.org/           Email: perl6-compiler@perl.org