my $value = foo( 3, 4, 5 ); for ( 1 .. 10_000 ) { # Blahblah my $inside_value = foo( $_, 1, 2 ); # Yadda, yadda, yadda } my $other_value = foo( 7, 8, 9 ); sub foo { my ($first, @args) = @_; do_something( $first ); return do_something_else( @args ); } #### my $LABEL; my @FOO_ARGS; my $FOO_RV; $LABEL = 'FIRST'; @FOO_ARGS = ( 3, 4, 5 ); goto FOO; FIRST: my $value = $FOO_RV; $LABEL = undef; $FOO_RV = undef; for ( 1 .. 10_000 ) { # Blahblah @FOO_ARGS = ( $_, 1, 2 ); FOO: { my ($first, @args) = @FOO_ARGS; do_something( $first ); $FOO_RV = do_something_else( @args ); goto $LABEL if $LABEL; } my $inside_value = $FOO_RV; # Yadda, yadda, yadda } $LABEL = 'SECOND'; @FOO_ARGS = ( 7, 8, 9 ); goto FOO; SECOND: my $other_value = $FOO_RV; $LABEL = undef; $FOO_RV = undef;