EclipseでPerlのIDEですよ、ダンナ。
たまたま見かけたこの記事で、PerlのIDE on Eclipseが動いて当然のように書かれていたので、試してみました。
EclipseでPerl CGIのデバッグ環境の構築
http://d.hatena.ne.jp/guccyon/20080314/p1
デバッグ実行はcgiのソースに適当にブレークポイントを貼って、
実行ダイアログの代わりにデバッグダイアログから実行するとブレークポイントでちゃんと止まってくれてステップ実行もできる。
そりゃいいや、というわけで手元のEclipse3(ガリレオ)をアップデートしてEPICをインスコ。
んが、HelloWorldなCGIをDebug実行してもさっぱりです。Request timeoutとかでるし、バックグラウンドタスクが57%で止まったままになるし。
CGIから一歩下がって、localスクリプトのデバッグを試してみて、一歩前進しました。
Use of uninitialized value in subroutine dereference at (null) line 1.
perl5db.pl did not return a true value.
BEGIN failed–compilation aborted.
これがconsoleに出た後、以下のようなダイアログが。
・・・ You can fix this problem manually by editing a single line in Cwd.pm, as suggested in EPIC bug report 2907155 at SourceForge.
だらだらと長く言い訳がましいメッセージですがバグは以下で参照できます。CPANですな。Cwd.pmというPerlモジュールを1行手で直せば直るということのようですな。
perl5db.pl did not return a true value – ID: 2907155
http://sourceforge.net/tracker/?func=detail&aid=2907155&group_id=75859&atid=545274
localhostがどうとかほざいているコメントがありますが、それは無視して、Cwd.pmを探すと・・・
<Perlのインストールフォルダ>\lib\Cwd.pm
にありました。あらためてCPANのバグチケットを眺めると、
・・・This is the fatal change:
sub _win32_cwd {
– if (defined &DynaLoader::boot_DynaLoader) {
+ if (eval ‘defined &DynaLoader::boot_DynaLoader’) {
$ENV{‘PWD’} = Win32::GetCwd();
}
else { # miniperl
・・・
貼り付けられたdiffの内容が「fatal change」つまり、やっちゃったという指摘なので、Cwd.pmの修正は以下のようになります。
sub _win32_cwd {
if (defined &DynaLoader::boot_DynaLoader) {
# if (eval ‘defined &DynaLoader::boot_DynaLoader’) {
$ENV{‘PWD’} = Win32::GetCwd();
ただしまだ取り込まれていない所を見ると、EPICの独りよがりのような気もしないでもなく。CPANの修正の履歴を追いかける力量はございませんことよ、オホホ。
で、それらしいスクリーンショット。
んが、ちょこちょこ動かしていると、
あ~ロックの方式はさすがに切り替えないとアレかぁ。ActivePerlの弱点だなぁ。EclipseなんだからLinuxでやりゃいいのか。
バージョンメモ:
EPIC 0.6.3
ActivePerl 5.10.1
Eclipse 3系
※EPICでCygwinのperlは鬼門と思われ
インプレスジャパン
売り上げランキング: 169327