in reply to OO: Leaving a constructor midway?

There's nothing WRONG or distinctly non-Perlish with the way that you did it - if it works, then that's fine.

It's probably tweaking you at some level because it is rather OO-unorthodox in spite of the fact that it works.

Your OO daemon may be happier if you don't do a redirect right in the midst of _login_user, but instead have a class field/method ($valid_user?) that gets set during _login_user, which can be checked by the consumer(s) of this class after instantiation. The consumer(s) can then decide on a redirect.