sub foo { my($self) = @_; my $authentication = $self->authenticate_user(); if(! defined($authentication)){ return {status=>0, error=>"Authentication Failed", external_id=>undef}; } my $profile = $self->get_user_profile(); if(! $profile->is_active()){ return {status=>0, error=>"User is not active", external_id=>undef}; } my($external_id) = $self->find_external_id($profile); if(! defined($external_id)){ $external_id = $self->send_profile_to_partner($profile); } return {status=>1, error=>undef, external_id=>$external_id}; } ### As Opposed to sub bar { my($self) = @_; my $status = 0; my $error = undef; my $external_id = undef; my $authentication = $self->authenticate_user(); if(! defined($authentication)){ $error="Authentication Failed"; }else{ my $profile = $self->get_user_profile(); if(! $profile->is_active()){ $error="User is not active"; }else{ my($external_id) = $self->find_external_id($profile); if(! defined($external_id)){ $external_id = $self->send_profile_to_partner($profile); } } } return {status=>$status, external_id=>$external_id, error=>$error}; }