An implementation of Devel::GlobalDestruction in pure Perl
Devel::GlobalDestruction はPurePerlでも実装できる。
END{ $in_global_destruction = 1; } sub DESTROY{ return if $in_global_destruction; # do something complex }
Perlのソースコードも読んだが,これで完全にDevel::GlobalDestruction::in_global_destruction() の代替になる。
ちなみに,Perl終了時にデストラクタ起動したくなければ,以下のようにするとDESTROYの呼び出しそのものをスキップできる*1。
END{ *DESTORY = sub {}; }