Thanks! Knew I'd seen the concept of OUTER but couldn't remember the keyword.
-y On Wed, Oct 3, 2018 at 5:51 AM, Timo Paulssen <t...@wakelift.de> wrote: > you can refer to the outer $v as OUTER::('$v'), that ought to help :) > On 03/10/2018 08:10, yary wrote: > > Reading and playing with https://docs.perl6.org/routine/temp > > There's an example showing how temp is "dynamic" - that any jump outside a > block restores the value. All well and good. > > Then I thought, what if I want a lexical temporary value- then use "my"- > and this is all well and good: > > my $v = "original"; > { > my $v = "new one"; > start { > say "[PROMISE] Value before block is left: `$v`"; > sleep 1; > say "[PROMISE] Block was left while we slept; value is still `$v`"; > } > sleep ½; > say "About to leave the block; value is `$v`"; > } > say "Left the block; value is now `$v`"; > sleep 2; > > Then I thought, well, what if I want to initialize the inner $v with the > outer $v. > > my $v = "original"; > { > my $v = $v; # "SORRY! Cannot use variable $v in declaration to > initialize itself" > say "inner value is $v"; > $v= "new one"; > ... > > Gentle reader, how would you succinctly solve this contrived example? > Anything you like better than this? > > my $v = "original"; > given $v -> $v is copy { > say "inner value is $v"; # "original", good > $v= "new one"; > .... > > -y > >