Micro WAF、Perl DancerをMacにインストールしてみた

MTのドキュメントやリリースノートを書くときに、外部のXMLやCSVデータを加工して自動でHTMLを成型することが時々あります。単純にHTML成型スクリプトを書くだけだと面白くないので、Mac OSX 10.6 のローカル環境にmicro web application framework の PerlDancer を入れてみた。

Dancer のインストールはcpanminus推奨とのことなので、まずはcpanmiusをインストール。


% curl -kL http://cpanmin.us | perl - --sudo App::cpanminus

% perldoc -l App::cpanminus
/opt/local/lib/perl5/site_perl/5.8.8/App/cpanminus.pm

% sudo -H cpanm --self-upgrade
% sudo cpanm YAML
% sudo cpanm local::lib    

Dancer ウェブアプリケーションフレームワークのインストール

続けて、PerlDancerをインストール。


% sudo cpanm Dancer    

あっけなくインストールできたので、scaffold でアプリケーションの枠組みを作成。


% dancer -a MyWeb::App

% cd MyWeb-App        
% perl ./bin/app.pl     

同梱されているHTTPサーバが起動して、http://localhost:3000/ でアクセス可能になった。

テンプレートエンジンをTemplate::Toolkitに変更するには、config.yaml に以下を記述。


template: "template_toolkit"
engines:
  template_toolkit:
    encoding:  'utf8'
    start_tag: '[%'
    end_tag:   '%]'    

あとは、/MyWeb-App/lib/MyWeb/App.pm に表示するデータの処理を記述して、


get '/bugs/' => sub {
    my $xml = XML::Simple->new;
    my $data = $xml->XMLin($filename);

    my $count = 0;
    my $list = "";
    foreach my $case (@{$data->{cases}->{case}}) {
        $list .= "<li><a href='http://bugs.movabletype.org/default.asp?$case->{ixBug}'>$case->{ixBug}</a> $case->{dtOpened}  : " . encode_entities($case->{sTitle}) . "</li>";
        $count++;
    }
    template 'bugs' => {title => 'Cases in Iliad', filename => $filename, count => $count, list => $list};
    
};    

表示用のテンプレートを MyWeb-App/views/bugs.tt に作ってあげればよい。


<div id="page">
  <div id="content">

    <h1>[% title %]</h1>

    <p>Loaded [% count %] cases from [% filename %].</p>
    <ul>
      [% list %]
    </ul>
  </div>
</div>

すると、http://localhost:3000/bugs/ で表示される。これは簡単で楽しい。ドキュメントも充実しています。