日経ソフトウェア2007年3月号の記事「正しいPerl/CGIの書き方」をWindows環境で試した際のメモ。
(ITProにも「Part1 正しいPerl/CGIの書き方 | 日経 xTECH(クロステック)」という記事で、日経ソフトウェアの記事がそのまま転載されている)
1. CPANの替わりにPPMを利用
記事ではCPANを使ってモジュールをダウンロードしているのだが、設定が複雑そうだったのでPPMを利用。
2. 記事の「(3) ビルドのテスト」でエラー発生
以下のコマンドを実行したらエラーが発生。
$ perl Build.PL
エラーは以下。
Can't locate Module/Build.pm in @INC (@INC contains: C:/Perl/site/lib C:/Perl/lb .) at Build.PL line 3. BEGIN failed--compilation aborted at Build.PL line 3.
PPMでModule::Buildをインストールしたら解決。良く見ると記事の注意書きにインストールしろと書いてあった。
また、以下のコマンドの実行の際にも警告メッセージが表示された。
$ perl Build
エラーは以下。
Build: blib\lib\My\Yakudoshi.pm: cannot resolve Lin paragraph 44.
このエラーの詳細は良く分からなかったのだが、以下の記事にそれらしい情報が載っており、とりあえず無視して良さそうなので、無視することに。
IBM Developer 日本語版 : 大変申し訳ありません。このページは無効です。
更に以下のコマンドでも二つのエラーが発生。
perl Build test
エラー1は以下。
t\00.load.........NOK 1# Failed test 'use My::Yakudoshi;' # in t\00.load.t at line 4. # Tried to use 'My::Yakudoshi'. # Error: Global symbol "$VERSION" requires explicit package name at C:\Perl \home\test\My-Yakudoshi\blib\lib/My/Yakudoshi.pm line 7. # Compilation failed in require at (eval 3) line 2. # BEGIN failed--compilation aborted at t\00.load.t line 4. Use of uninitialized value in concatenation (.) or string at t\00.load.t line 7.
自動生成された*.pmファイルのバージョン定義部分「$VERSION = qv('0.0.3');」という箇所を「our $VERSION = qv('0.0.3');」に変更するとエラーが解消された。
エラー2は以下。
t\perlcritic......Can't locate Test/Perl/Critic.pm in @INC
これは、モジュールCritic.pmをインストールしていない事が原因なのだが、Critic.pmがPPMで見つからなかったので、Search the CPAN - metacpan.orgから手動で入手する事に。
3. Test::Perl::Critic.pmの手動インストール
(a) CPANからTest-Perl-Criticをダウンロード
(b) CPANからTest-Perl-Criticの前提となるPerl-Criticをダウンロード
(c) PPMでPerl-Criticの前提となるString-Format、Module-Pluggable、B-Keywords、List-MoreUtils、Config-Tinyをインストール
(d) PPMでPerl-Criticのオプション前提となるFile-Home、Perl-Tidyをインストール
(e) CPANからPerl-Criticの前提となるModule-Pluggable、PPIをダウンロード
(Module-PluggableはPPMでインストールしたものだとバージョンが低すぎた為)
(f) Module-Pluggableを手動でビルドしてインストール
(g) PPIはModule::Build方式に対応しておらず、ビルドできなかったのだが、PPI.pmとPPIフォルダをそのままPerl/lib配下にコピー。
あとは、META.ymlに書かれているrequiresの中でParams::Utilモジュールをインストール。
(h) Perl-Criticを手動でビルドしてインストール
(i) Test-Perl-Criticを手動でビルドしてインストール
(j) 最後にTest-PodをPPMでインストール必要も有った
一応これで、perl Build testがエラーなく実行できるようになり、演習を進めれるようになった。
上記作業を纏めると、CPANのモジュールを手動でインストールする場合、以下の手順で行うのが良さそう。
ステップ1:Module::Build方式をサポートしていれば(Build.PLが存在すればサポートされている)、INSTALLというテキストファイルの内容に従って、インストールを行う。この方法だと、不足している前提モジュールを教えてくれる。
ステップ2:Module::Build方式がサポートされていない場合、手動で*.pmをlib配下等にコピー。また、Makefile.PL等をチェックして、前提モジュールを別途インストールする。(Module::Buildに対応させる方法もありそうだが、いまいち良くわからないのでやってない)
備考:
- 関連モジュールのインストールの一環で、Scalar::Utilのversion 1.19を入れたのだが、perl Build testで以下のエラーが出るようになった。とりあえず、version 1.18にダウングレードしたらエラーは出なくなった。原因は不明。
Weak references are not implemented in the version of perl.....