Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

Re: initialise state variable from list context, NOT!

by JavaFan (Canon)
on Sep 08, 2009 at 12:40 UTC ( #794119=note: print w/ replies, xml ) Need Help??


in reply to initialise state variable from list context, NOT!

There's no point giving the compiler a clue, as the compiler already knows what you are trying to do. And it's currently forbidden. The reason is that there are too many corner cases to let 'state LIST' be something that is intuitive all the time.

state $scalar is all that is allowed. Perhaps the best you can do is:

state $record = empty_record;


Comment on Re: initialise state variable from list context, NOT!
Select or Download Code
Re^2: initialise state variable from list context, NOT!
by Random_Walk (Parson) on Sep 08, 2009 at 14:17 UTC

    Thanks for the quick answer. The reason I thought I may get it to work with some hints for the compiler is that this is allowed

    state %record; %record = ( getting => 'url', url => 'http://', match => '', getting => '', alarm => 'no', );

    Is an empty hash considered as a safe case? Where is the border of what I can get away with?

    Cheers,
    R.

    Pereant, qui ante nos nostra dixerunt!
      One of border cases is:
      sub foo { (my $foo, state $bar) = (f(), g()); ... } foo; foo; # Should g() be called?
      As for state %record;, that is allowed. It's state in a list assignment that is disallowed. But note that
      state %record; %record = ( ... );
      doesn't give you any benefits over
      my %record = ( ... );
      You will have to write it as
      state %record; %record = ( ... ) unless keys %record;

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://794119]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others lurking in the Monastery: (5)
As of 2014-07-26 11:15 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (175 votes), past polls