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