Doing an eval without checking $@ and throwing a useful error message is a really bad idea. I would also suggest reading the section on Plain Old Comments in perlsyn and using that to cause any errors thrown from within the subroutine to have more useful and meaningful names than just eval 38.