develooper Front page | perl.fwp | Postings from July 2003

Re: my if?

From:
Ronald J Kimball
Date:
July 1, 2003 07:31
Subject:
Re: my if?
Message ID:
20030701143034.GA198013@linguist.thayer.dartmouth.edu
On Tue, Jul 01, 2003 at 05:15:09PM +0300, Vladi Belperchinov-Shabanski wrote:

>   my $id = 1 if $_ == 3;

my has a compile time behavior and a runtime behavior.  At compile time, my
allocates memory for the variable and adds it to the pad.  At run time, my
resets the value of the variable.

If you put a conditional on the my statement, then the run time behavior
does not occur when the conditional is false.  Instead of getting reset,
the value is preserved from the previous iteration.

This was an accidental feature that is now kept for backwards
compatibility, because some programmers have used it to create static
variables.  It's best to avoid it, however.


Ronald



nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About