ひさしぶりにCGIを書いた
具体的なことは、改めて書く予定。
とりあえず、書いたよって。
最近、自分しかいないSlackチームを作って、
botが褒めてくれたら良いのにって漠然と思ってたんだけど、
それを形にした。
最初の実装は、Azure上にNodeJSで実装したんだけど、
自分の書き込みに対する反応が複数回行われることに気付いて、
これPerlだったら対策できるのに・・・って思ってて、
Perlで書き直して、さくらのレンタルサーバーで動かすことにした。
CGIと言えば
むかし掲示板とか設置したことある人なら分かると思うんだけど、
ロジック以外に余計な部分が多くて、
思い出すだけでもうんざりすると思うんだけど、
きょうびのCGIはそんなことはしない。
こんな感じで雛形を生成して、
足りないモジュールとペライチCGIファイルをアップロードするだけ。
$ mojo generate lite_app hoge.cgi
ただ、注意しなきゃいけないこともあって、
例えば、自分の開発環境はperlbrewを使ってperl-5.22 on mojaveで、
上記のコマンドを使ってモジュールを用意しても、
システムPerlであるv5.18では動作してくれなかった。
なので可能な限り、動作環境と同じバージョンのPerlを使った上で、
足りないモジュールをインストールするのが確実と思われる。
perlbrew
を使っているなら、一度System Perl(*1)に戻して、
任意のフォルダにモジュールをインストールする。
$ perlbrew off
$ cpanm -L lib Mojolicious Sub::Util
すると、ペライチCGIファイルの頭の方は、こんな感じになる。
#!/usr/bin/perl use strict; use warnings; use v5.14; use lib './lib/lib/perl5'; use Mojolicious::Lite; use Mojo::UserAgent; use Mojo::JSON qw/decode_json/;
もちろん、Perlのバージョンが古いとか、
他に必要なモジュールが無い場合は?とかあると思うんだけど、
少なくともさくらのレンタルサーバーでは上記の条件は満たせるし、
こんなこともあろうかと的なモジュールも入ってたりする。
動かないときはSSHで入って、
$ perl hoge.cgi cgi
って入力すれば、足りないモジュールが分かる。(*1)
$ mojo generate
コマンドで作ったならRouterもシンプルだし、
JSONを受けてJSONを返すだけなら、ほんの十数行ほど書き足すだけ。
最近、お仕事を始めてアレなんだけど、
余裕ができたら具体的なことを書こうと思う。
おしまい。
(*1) v5.18.2
(*2) Sub::Util
が足りないのは、これで分かった。
Leave a Comment