Perlコードを書いているんですが、どうも書き込み違反でActivePerlが落ちます。絞り込んでみると、どうも以下のコードが原因っぽい。
use Webpage::Parts; foreach my $class(@{$self->{parts}}) { use $class; $self->addvars($class::getvars()); }
どうもコンパイル時のエラーみたいです。直前のif文でここに来るはずがないのに落ちますし。
下のように直してみると、何事もなくコードが通ります。
use Webpage::Parts; foreach my $pack(@{$self->{parts}}) { (my $file = $pack) =~ s/::/\//; require "$file.pm" if(-e $file); $self->addvars($pack->getvars()); }
まあ、useに変数使っちゃいけないんだろうなぁ、というのは何となく分かるのですが。コンパイル時に変数の中身が決まっているわけはないし…。
でもそれならそれで、dieして止まるのが正しい挙動なはず。どうもバグ臭いですね。コマンドラインでPerl -e "use $class; "
とやってみたら、期待通り文法エラーだし…。
これ以上の究明は時間がかかるしやめておきますけど。