On Wed, Sep 2, 2015 at 7:49 AM, Matija Papec <[email protected]> wrote:
>
> I've picked a wrong example,
>
> seq 3 | perl -nE 'my %d; $d{$_}++; END { say keys %d }'
>
> vs
>
> seq 3 | perl6 -ne 'my %d; %d{$_}++; END { say keys %d }'
>
> So it seems that perl6 handles lexicals inside while (<>){} one-liners
> differently.
>
Ah, yes. Interesting. Run-time effect of C<my> not happening
repeatedly. How would that deparse?
Compare:
$ seq 3 | perl6 -e 'for lines() { my %d; %d{$_}++; END { say keys %d } }'
3
$ seq 3 | perl6 -e 'for lines() { state %d; %d{$_}++; END { say keys %d } }'
1 2 3
$
… and while I'm comparing:
$ seq 3 | perl6 -e 'for lines() { my %d; %d{$_}++; END { say keys %d } }'
3
$ seq 3 | perl -E 'while (<>) { my %d; $d{$_}++; END { say keys %d } }'
1
$
… I need me a new mental model. :-)
Eirik