in reply to unless versus if ( ! ) inside a subroutine
See Re^3: A cleaner way of scoping variables.
Update: ok, yours is actually not exactly the same code as that one, but I think it might be related.