There are other things that could make the eval fail, syntax errors, missing the 1; at the bottom of the pm...but in each of those cases you'd probably still want to treat it as if you "didn't have it". You couldn't use a broken module anyways... :)
As for the actually technique... That's probably what I'd use, I can't seem to think of another way off hand.