use List::Util qw( first ); if ( my @f = @{(first { @{$_=[$_->()]}==1 } $code1, $code2)[0]||[]} )