Perlでtry catch

Java ではよく見かける try catch 文、

public Object bug() throws Exception [
  throw new Exception("!!!");
}

public void hoge() {
  try {
    Object obj = bug();
  } catch(Exception e) {
    //
  }
}

なんと Perl では以下のように書くことで実現できるそうです。
まったく、なんて節操のない言語なんだ(笑)

sub bug {
  die "!!!";
}

sub hoge {
  eval {
    my $obj = bug();
  };
  if ($@) {
    //
  }
}

bug の部分はもうちょっと複雑で DateTime->new(); で引数がまずかったら undef を返してくれればいいものを die して落ちるという問題が発覚し、上記のような手段で回避しました。eval して使うことを前提にしているなら確信犯ですね・・。