use Data::Dumper; eval { die {errorcode => 12, errormess => 'you have died'}; }; print "error caught: ".Dumper($@) if $@; # or even better eval { die bless {errorcode => 12, errormess => 'you have died'} => 'My::Exception'; }; print "error caught2: ".$@->{errormess}."\n" if $@ and ref($@) eq 'My::Exception';