sub myfunc { my( $this, $that, @those ) = @_; # Here it may make sense to pull # in the contents early on for # simplicity and clarity's sake. # Code here.... # more code here.... foreach my $alias ( @those ) { # Note we declare $alias only # where it's needed. # Do some stuff here. # Do more stuff... my $another = $alias * 5; # $another is limited to the scope # of the foreach loop. $this += $another; } while ( my $choice = shift @those ) { # Another tightly scoped var. # Do something else. } return $this }