eval $strとeval{ code }の意味が違うってのがもにょるな。

try{ code }でよかったのに。