# Do preparatory stuff, then &screens; &{ $screens{ $current_screen } } sub screens{ %screens = ( main => sub { ... main screen subroutine ... }, foo => sub { ... screen for foo ... }, # etc. etc. etc. ); }