令和の時代にPerlでCGIの開発環境をPlackで構築する方法

令和の時代にPerl/CGIでwebアプリを作りたくなったので、まずは開発環境を構築していく。

開発環境について

  • Perl 5.40.2
  • cpm

個人的にはmodule installerとしてはcpmを使っているが、cpanでもcpanmでも 何でも良い。

また、Perlのバージョンは5系であれば何でも良い。

1.必要なモジュールのインストール

今回はPlackを使うことでCGIの開発環境を整えていく。(厳密にはCGI Serverに特化したPlack::App::CGIBinだが)

必要なモジュールをインストールしよう。

cpm install -g Plack Plack::App::CGIBin CGI::Compile

Plackだけインストールすれば良いかと思えばそうではなく、他にも色々なモジュールを インストールする必要があった。

僕の場合はCGI::Compileのインストールが必要だった。

2.必要なスクリプトを作成する。

まずはapp.psgiを作成する。

#!/usr/bin/env perl
# app.psgi
use strict;
use warnings;
use Plack::App::CGIBin;

sub {
    my $env = shift;

    # 全てのアクセスをindex.cgiに転送
    $env->{PATH_INFO} = '/index.cgi';

    return Plack::App::CGIBin->new(root => ".")->to_app->($env);
};

次に同じディレクトリにindex.cgiを作成する。

#!/usr/bin/perl
# index.cgi
use strict;
use warnings;
use utf8;

# 標準出力をUTF-8に設定
binmode STDOUT, ":utf8";

print "Content-Type: text/html; charset=UTF-8\n\n";
print "<html><head>";
print "<meta charset=\"UTF-8\">";
print "</head><body>";
print "<h1>Hello from Perl CGI!</h1>";
print "<p>現在時刻: " . localtime() . "</p>";
print "</body></html>";

そして、index.cgiの権限を変更しよう。

chmod +x index.cgi

そして、以下のコマンドを実行すれば上手くCGI Serverが立ち上がる!

plackup -o 127.0.0.1 -p 8000 -R . app.psgi

これでhttp://127.0.0.1:8000/でアクセスできる。 もしモジュールがインストールされていない系のエラーが出た場合は、そのモジュールを入れること。

参考文献