Yes, that's a better way of going about it. I'll confess that when I'm coding things quickly, I often do the simplest thing and just return the undef rather than raise an exception. In my tests, I get a chance to evaluate this how this actually works and when I have problems, I go back in and croak, carp, or silently ignore the issue, depending upon what it is and how it affects the actual problem.
That being said, I really like tye's error object idea. If I can create a class that has an Exception object, no methods, and an AUTOLOAD, I can get robust error handling with plenty of flexibility. And again, if someone doesn't like chained calls, they still don't have to use them.
New address of my CGI Course.
Silence is Evil (feel free to copy and distribute widely - note copyright text)