« サイボウズ創業10周年記念お客様感謝デー | メイン | BlackHatJapan2007 / AV2007 懇親会 »

[訂正] Webプログラミング実力アップ Part1 正しいPerl/CGIの書き方:ITpro

2007/11/14 追記: Module-Starter-1.470 のバージョンアップによって、下記不具合は解消されました。 記事中の手順で問題なく module-starter が使えるようになっています。

以前、日経ソフトウエア2007.03(1月24日発売)に書いた特集記事Webプログラミング実力アップ Part1 正しいPerl/CGIの書き方:ITpro ──Webプログラミング初心者からの脱出の手引き としてITpro上で公開されましたが、その間にCPANモジュールのModule-Starterのバージョンアップがあって、module-starterが動作しない例がありました。

■ 問題点

module-starter を実行すると Unknown placeholder

in Makefile.PL というエラーが出る。

http://b.hatena.ne.jp/kits/20071023#bookmark-6249546
2007年10月23日 [perl][programming]module-starter --module=My::Yakudoshi したら Unknown placeholder
in Makefile.PL と言われた。
cpanを使ってみる - いつの間にか27歳日記
sudo perl -MCPAN -e shell
get Module::Starter
force install Module::Starter

が、いざ使ってみるとやっぱり。

Unknown placeholder <MAIN PM FILE> in Makefile.PL

むむ~~。

たしかに、最新の Module-Starter-1.44(Ricardo SIGNES 版)だとうまくいかない模様。

同様の指摘を古川さんよりメールでいただきました。

■ 解決方法

古いバージョンの Module-Starter-1.42(Andy Lester 版)をインストールする。

$ cpan P/PE/PETDANCE/Module-Starter-1.42.tar.gz

このようにすると、記事中の module-starter --module=My::Yakudoshi がうまく実行できると思います。

■ pmsetupを使う(別の解決方法)

正直、Module::Starter::PBP は Damian Conway臭が強すぎるので、結局自分でモジュールのテンプレートを弄るのであれば、 宮川さん作のpmsetupを使う手もあります。

テンプレートが一つのファイルにまとまっているのでカスタマイズが容易で、svkとの連携も簡単です。

pmsetup のインストール手順
$ wget http://svn.yappo.jp/repos/public/misc/pmsetup
$ vi pmsetup
$ sudo install -m 0755 pmsetup /usr/local/bin

実行には Template, YAML, Module::Install, Test::Perl::Critic の CPANモジュールが必要です。事前にインストールしてください。

$ cpan Template
$ cpan YAML
$ cpan Module::Install
$ cpan Test::Perl::Critic (エラーが出る場合はforce installしてください)

pmsetup初回実行時には以下の項目を聞かれるので自分用の設定を入力します。

Your name:  [] Yoshinori TAKESAKO
Your email:  [] takesako{at}shibuya.pm.org
Your svk base scratch DEPOTPATH: [//scratch] [] //scratch
Your svk base mirror DEPOTPATH: [//mirror] [] //mirror
Your workdir: [/home/takesako/tmp] /home/takesako/tmp
pmsetup でモジュールを作る
$ pmsetup My::Yakudoshi
$ cd My-Yakudoshi
$ perl Makefile.PL
$ make test
$ make manifest (MANIFEST の作成)
$ make dist     (tarball の作成)

これをカスタマイズして、自分用のpmsetupを作ってみるのもいいと思います。

  1. YappoLogs: 自分用のpmsetupを作った

以上、ご参考まで。

コメント

引用元の記事「cpanを使ってみる - いつの間にか27歳日記」にもありましたが、

Test::Perl::Critic

のインストールもトラブってくれます。
折角の記事も、手元で動作確認できなければ、今後の展開の考えようもありません。

acさん、ご報告ありがとうございます。

もしも Test::Perl::Critic のインストールがうまくいかない場合は

$ cpan
> force install Test::Perl::Critic
> quit

でいかがでしょうか。CPANシェルの使い方については別途参照してください。

ご返答ありがとうございました。

「Weblog on mebius.tokaichiba.jp」
http://ynomura.dip.jp/archives/2007/10/modulestarterpb.html#more

に対応方法の記述がありました。
PBP.pm の 2関数を修正し、
"Unknown placeholder in Makefile.PL"
というエラーは解決しました。

また、Test::Perl::Critic の件は、cpan プロンプトから
force install Perl::Critic
force install Test::Perl::Critic
でインストールされ、記事内容の確認ができました。
Class::Accessor::Fast のインストールも必要でした。

以上報告です。

「今後の展開」なのですが、「この記事に推奨してある方法で、推進します。」というアプローチが日経世代の上司には相当有効なので、記事通りの動作を再現できたので、当初の目論みでいけそうです。

ありがとうございました。

今更通りすがりで恐縮ですが、
Module-Starter-1.470
をインスコしたら問題なく利用できました。

コメントを投稿