Data::Utilのmethod modifiersが落ちる件は,Perlコアのバグであるようだ*1。perlがPerl_call_sv()でサブルーチンを呼び出すときに,そのサブルーチンがディレクティブを含んだeval()を実行し,そのuseディレクティブが例外を放出すると*2,setjmp(3)がSEGVを起こしたり黙って落ちたりするようだ。 この問題はPerl_call_sv()を使っているXSコードで起きやすいが,以下のコードで示すようにPure Perlでも発現する可能性がある。 再現コード: #!perl -w use strict; use Test::More tests => 3; { package T; use Tie::Hash(); use base qw(Tie::StdHash); sub FETCH{ my($self, $key) = @_; # XXX