CGI::Compile を試してみた
CGI::Compile とは miyagawa さんが作成した 既存のcgiスクリプトを書き換え無しにPSGI仕様に変換してくれるモジュールです。 一口に変換といっても新しくファイルが作られる訳ではなく実行時にPSGI仕様に合うようにしてくれるようです。
これを使うことでmod_perlのようなpersistentな状態を簡単に作り出してくれる便利モジュールですね。
簡単な hello world で試してみた
hello.cgi
#!/usr/bin/perl use strict; use warnings; use CGI; my $cgi = CGI->new(); print "Content-Type: text/html\n\n"; my $name = $cgi->param("name"); print "Hello "; print defined $name ? $name . "!" : "world!";
name パラメータを渡すと Hello name! と表示されるだけの簡単なプログラムです。
この cgi スクリプトを plackup で起動できるように CGI::Compile に hello.cgi を渡す psgi ファイルを作成します
hello.psgi
use CGI::Emulate::PSGI; use CGI::Compile; my $cgi_script = "hello.cgi"; my $sub = CGI::Compile->compile($cgi_script); my $app = CGI::Emulate::PSGI->handler($sub);
.psgi ファイルが出来たらplackupで起動させるだけです。
$ plackup -a hello.psgi Plack::Server::Standalone: Accepting connections at http://0:5000/
ブラウザからhttp://localhost:5000/?name=fuga とアクセスすると Hello fuga! と表示されます。
既存のcgiを書き換えしなくても動く所がすごいですね。
created: