if( do{$o->check(...); ! $o->state} ){ action.. }elsif( do{$o->check(...); ! $o->state} ){ action.... $o->blah() if ($o->state) { actions..check.. unless($r->state) { and so on...deeper and deeper... } } } #### $o->check(...); unless ($o->state) { $o->actionSet1; } else { $o->check(...); unless ($o->state) { $o->actionSet1; } } #### unless ( $o->check(...) ) { action.. } else { unless ( $o->check(...) ) { action.... $o->blah() if ($o->state) { actions.. unless( $o->check(...) ) { and so on...deeper and deeper... } } } }