Scope of variables in a function

Gordon Banner tech at gordonbanner.me.uk
Sun Jun 2 22:43:02 BST 2013


Also that would break

my $var = "outer";
{
     my $stashed_value = $var;
     my $var = "inner";
     ...
}

I don't have an instant example of why doing that would be a good thing, 
but it's quite clearly supported at present.
Gordon

On 02/06/2013 12:49, Dave Mitchell wrote:
> The original patch was a proof-of-concept that hoisted the run-time
> effects of my to the start of the containing scope. So that from a
> run-time point of view,
>
>      {
> 	AAA;
> 	my $x = ...;
> 	BBB;
> 	my $y = ...;
> 	CCC;
> 	my $z = ...;
> 	DDD;
>
>      }
>
> is executed like
>
>      {
> 	my ($x,$y,$y);
> 	AAA;
> 	$x = ...;
> 	BBB;
> 	$y = ...;
> 	CCC;
> 	$z = ...;
> 	DDD;
>      }
>
> The main problem with it was that in something like the following:
>
>      while (<>) {
> 	next unless /rare condition/;
> 	my ($lots, $of, $lexicals) = split;
> 	...
>      }
>
> all those lexicals would be initialised and cleared every time round the
> loop, rather than just on rare occasions: which could be quite a
> performance hit.
>
>



More information about the london.pm mailing list