sub method1 { ... if ($self->authenticated) { ... } else { ... } ... } sub method2 { ... if ($self->authenticated) { ... } else { ... } ... } sub method3 { ... if ($self->authenticated) { ... } else { ... } ... } #### package User::Anonymous; sub method1 { ... } sub method2 { ... } sub method3 { ... } package User::Authenticated; sub method1 { ... } sub method2 { ... } sub method3 { ... }