Talk About Network

Google


Register and Login
Nick
Password
Register create new account Sign up is FREE and you can post replies, new topics, bookmark posts and more!
Recover lost password


Programming > Perl Beginners > Re: a declaring
Latest [ Topics | Posts ] Archive Post A New Topic Post a Reply
<< Topic < Post Post 6 of 8 Topic 10970 of 11509
Post > Topic >>

Re: a declaring

by chas.owens@[EMAIL PROTECTED] (Chas. Owens) Apr 21, 2008 at 01:58 PM

On Mon, Apr 21, 2008 at 10:40 AM, J. Peng <peng.kyo@[EMAIL PROTECTED]
> wrote:
> I'm not sure, but why this can work?
>
>  use strict;
>  use warnings;
>  use Data::Dumper;
>
>  my $y=0;
>  my @[EMAIL PROTECTED]
 =(1,2,3) if $y;
>  print Dumper \@[EMAIL PROTECTED]
>
>
>  Since $y is false, it seems @[EMAIL PROTECTED]
 shouldn't be declared.
>  But why the last print can work?
snip

Because of a quirk in how the current and past versions of perl parsed
and handled the statement.  It is a mis-feature according to Larry.
Some people used to use it to create state variables.  The correct way
to create a state variable prior to 5.10 is with a closure:

{
    my @[EMAIL PROTECTED]
 = (1, 2, 3);
    sub function_that_uses_x {
        ...
    }
}

In Perl 5.10 we got the state* function that works like the my
function but does not reinitialize each time through:

sub function_that_uses_x {
    state @[EMAIL PROTECTED]
 = (1, 2, 3);
    ...
}

Of course, the old way is still handy if you need to share a state
value between functions:

{
    my $shared = 0;
    sub f1 {
        ...
    }
    sub f2 {
        ...
    }
}

-- 
Chas. Owens
wonkden.net
The most im****tant skill a programmer can have is the ability to read.
 




 8 Posts in Topic:
a declaring
peng.kyo@[EMAIL PROTECTED  2008-04-21 22:40:19 
Re: a declaring
noreply@[EMAIL PROTECTED]  2008-04-21 17:37:20 
Re: a declaring
noreply@[EMAIL PROTECTED]  2008-04-21 17:54:23 
Re: a declaring
chas.owens@[EMAIL PROTECT  2008-04-21 13:21:46 
Re: a declaring
noreply@[EMAIL PROTECTED]  2008-04-21 22:12:37 
Re: a declaring
chas.owens@[EMAIL PROTECT  2008-04-21 13:58:28 
Re: a declaring
peng.kyo@[EMAIL PROTECTED  2008-04-22 09:25:38 
Re: a declaring
chas.owens@[EMAIL PROTECT  2008-04-21 21:27:17 

Post A Reply:
  Go here to Signup

AddThis Feed Button


About - Advertising - Contact - Frequently Asked Questions - Privacy Policy - Terms of Use - Signup

Contact
tan12V112 Wed Jul 23 21:01:53 CDT 2008.