読者です 読者をやめる 読者になる 読者になる

北海道苫小牧市出身の初老PGが書くブログ

永遠のプログラマを夢見る、苫小牧市出身のおじさんのちらしの裏

use 時のエラーと %INC のメモ

自分用メモ。perl5.8.5 だと、use に失敗しても %INC に値が入ってしまうようです。perldeltaを追いましたが、どこで直ったのか見つかりませんでした。

5.10.0 では %INC に値が入ることはなかったので、この間のどこかで直ったのだと思います。

$ perl -v

This is perl, v5.8.5 built for x86_64-linux-thread-multi

Copyright 1987-2004, Larry Wall

...略...

$ cat HavingError.pm
die "sorry";

$ cat test.pl
use strict;
use warnings;

eval "use HavingError";
$@ and warn;

print $INC{'HavingError.pm'}, "\n";

$ perl test.pl
sorry at HavingError.pm line 1.
Compilation failed in require at (eval 1) line 2.
BEGIN failed--compilation aborted at (eval 1) line 2.
        ...caught at test.pl line 5.
HavingError.pm

「モジュールを事前に一括useしてる場所ではuse libの関係でエラーとなる(このエラーはevalで飛ばしている)のだけど、その後のメインスクリプトではuse libで依存を解決しているのでuseできるはずなのにエラーが出る」という現象でハマりました。。。