<div>Hey Guys,</div><div><br></div>I showed this behaviour to a work colleague, and he came up with the following:<div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)"><br>
</span></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)">-- 8< --</span><br style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)">
</div><div><div><br></div><div>#!/usr/bin/perl</div><div><br></div><div>use strict;</div><div>use warnings;</div><div><br></div><div>sub foo {</div><div>  my $baz = 0 if 0;</div><div>  $baz ||= 0;</div><div>  print "baz = $baz\n";</div>
<div><br></div><div>  $baz += 10;</div><div>}</div><div><br></div><div>sub bar {</div><div>  my $baz = 0 if 0;</div><div>  $baz ||= 0;</div><div>  print "baz = $baz\n";</div><div><br></div><div>  $baz += 100;</div>
<div>}</div><div><br></div><div>foo;</div><div>bar;</div><div>foo;</div><div>bar;</div><div>foo;</div><div>bar;</div><div>foo;</div><div>bar;</div><div><br style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)">
<span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)">-- >8 --</span></div><div><br></div><div>$baz isn't global, but it persists locally between calls. Does anyone know exactly what is happening here? I'm relatively new to Perl and might just be missing something easy :)</div>
<div><br></div><div>Cheers,</div><div>Adam</div><br><div class="gmail_quote">On Thu, Jul 12, 2012 at 9:00 AM, Alfie John <span dir="ltr"><<a href="mailto:alfiej@opera.com" target="_blank">alfiej@opera.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi guys,<br>
<br>
Thanks to Rob Norris for reminding me to bring up my rant on Google+<br>
<br>
What do people think about the following?<br>
<br>
-- 8< --<br>
<br>
#!/usr/bin/perl<br>
<br>
use strict;<br>
use warnings;<br>
<br>
sub foo {<br>
  my ( $bar ) =@_;<br>
<br>
  my $baz = $bar if $bar;<br>
  print "baz = $baz\n";<br>
<br>
  $baz = 42;<br>
}<br>
<br>
foo( 1 );<br>
foo( 1 );<br>
foo( 0 );<br>
foo( 0 );<br>
<br>
-- >8 --<br>
<br>
Alfie<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
  Alfie John<br>
  <a href="mailto:alfiej@opera.com">alfiej@opera.com</a><br>
_______________________________________________<br>
Melbourne-pm mailing list<br>
<a href="mailto:Melbourne-pm@pm.org">Melbourne-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/melbourne-pm" target="_blank">http://mail.pm.org/mailman/listinfo/melbourne-pm</a><br>
</font></span></blockquote></div><div><br></div></div>