I'd probably go this path myself (or the third example).
It really all depends on the conditions and the context the sub is used in.
More often than not though, I don't have subroutines that can return several values where "undefined" isn't a possibility. Usually that being the case, a bare return at the end becomes the trap.
-Lee
"To be civilized is to deny one's nature."