ooh neat! I didn't know. Indeed this works. Thanks Sean!

    raku -ne'push my @i: $_ if .starts-with: q[WARN]; END .say for @i'
sample.log

-y


On Fri, May 8, 2020 at 1:04 PM Sean McAfee <eef...@gmail.com> wrote:

> On Fri, May 8, 2020 at 6:53 AM Brad Gilbert <b2gi...@gmail.com> wrote:
>
>> So together that would be:
>>
>>     raku -ne 'BEGIN my @i; @i.push($_) if /^WARN/; END .say for @i.sort'
>>
>
> Or alternately the main body of the loop can be written:
>
>     (my @i).push($_) if /^WARN/;
>
> Or even:
>
>     push my @i: $_ if /^WARN/;
>
> It's so nice how Raku essentially compiles the body of these file loops
> into a little subroutine so that the "my" declaration only occurs once,
> unlike how Perl 5 just textually wraps the loop with "while (<>) {" and "}"
> which makes the declaration occur on every iteration.
>
> I originally figured this out when I idly worked up a classic
> word-frequency-count one-liner:
>
>     raku -ne '++(my %freq){$_} for m:g/\w+/; END .say for
> %freq.antipairs.sort.reverse' file ...
>
>

Reply via email to