Perl5.24からAUTOLOAD(DESTROY)の仕様が変わったらしい
2016年3月2日
そもそもAUTOLOADは、メソッドが無かった時に代わりに呼ばれるやつで、パフォーマンスがどうのってあまり使われる事ないかもしれないですが、便利といえば便利なのでたまーに使うんですが、Perlのバージョンを上げたら
Can't call method "DESTROY" on an undefined value at ...
ってな感じで、エラーが続出してアプリが起動しなくなってなんだこれって思って調べてみたら・・
If you define an AUTOLOAD in your class, then Perl will call your AUTOLOAD to handle the DESTROY method. You can prevent this by defining an empty DESTROY, like we did in the autoloading example. You can also check the value of $AUTOLOAD and return without doing anything when called to handle DESTROY.
http://search.cpan.org/~rjbs/perl-5.24.0/pod/perlobj.pod#AUTOLOAD
DESTROYメソッドを明示的に書かない場合は、AUTOLOADが呼ばれるようになったぽい。
って事で、回避する為に空のDESTORYメソッドを用意。
sub AUTOLOAD { my $self = shift; } sub DESTROY {}
無事に起動できましたとさ。
めでたしめでたし。