On Wed, Sep 2, 2015 at 7:49 AM, Matija Papec <mpapec2...@yandex.com> 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

Reply via email to