unless ( $result = my_sub() ) { # handle error condition } #### my $result; unless ( my_sub(\$result) ) { # handle error condition } #### sub my_sub { my $r_result = shift; $$r_result = whatever(); was_there_an_error() ? 0 : 1 ; }