in reply to Re^2: Is modifying the symbol table to redefine subroutines evil?
in thread Is modifying the symbol table to redefine subroutines evil?

Now that you mention it, I usually handle this kind of bail-out conditional with a simple test at the top:
return if $foo_has_been_called;
Then you don't have to indent the whole rest of the sub.