http://www.perlmonks.org?node_id=864030


in reply to Control Flow - Multiple returns or nested conditionals

I generally prefer less nesting, and thus direct return. However your example suffers from code duplication for the version that uses return(), though that's not necessary:
sub err { { status => 0, error => shift(@_), external_id => undef); } sub foo { my($self) = @_; my $authentication = $self->authenticate_user(); return err('Authentication Failed') unless defined $authentication; my $profile = $self->get_user_profile(); return err('User is not active') unless $profile->is_active; 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}; }
Perl 6 - links to (nearly) everything that is Perl 6.