原です。
些細なことですが、eval あるいは #{..} による文字列展開は、
例外が起こらなくても $! をリセットする様です。
例外が起こらない場合は値を変えない方がいいのではないでしょ
うか。
それから、eval("") で Segmentation fault を起こす様です。
---===-=-=-=-=-=-=-=-=======--=-=-=-==-=-===-=-=-=-=-=-=--=-==-=--
Shin-ichro Hara(Nagaoka Univ.of Tech.)