Have I got this correct?

    state @a = foo();   # Implicit START block around call and initialisation
    state (@a) = foo(); # Implicit START block around call and initialisation
    (state @a) = foo(); # foo() called every time, assignment every time


There's this small bit of fun that in the Perl 5 optree, the second and third
are identical. Although curiously these are not:

    state(@a, @b) = foo();
    (state @a, state @b) = foo();

(former has private flags set on a pushmark op, so not clear why the
analogous case for the single array is not like this. I realise that @b will
always be () in Perl 5)

Nicholas Clark

Reply via email to