Right after sending I saw that the semicolon wasn't the issue, sorry! The
second half of my message is correct I think. The command reads a line at a
time, then calls lines()[3,2,5] on that single line which has no lines
after the zeroth.

tee hee, zeroth is a word!

-y


On Fri, Aug 28, 2020 at 10:59 AM William Michels <w...@caa.columbia.edu>
wrote:

> I remove the semicolon, and it throws an error:
>
> $ cat test_lines.txt | raku -ne 'my $x=$_; say $x for
> $x.lines()[3,2,5] -> $i {say $i;}'
> ===SORRY!=== Error while compiling -e
> Unexpected block in infix position (missing statement control word
> before the expression?)
> at -e:1
> ------> my $x=$_; say $x for $x.lines()[3,2,5] ->
>     expecting any of:
>         infix
>         infix stopper
>
> What's the correct code?
>
> Best, Bill.
>
>
> On Thu, Aug 27, 2020 at 2:12 PM yary <not....@gmail.com> wrote:
> >
> > You have an extra semicolon in there -" say $x; for" -
> >
> > so what happens is for each line
> > 1. it runs "say $x" and thus prints "Line 0" the first time through,
> since it had read "Line 0" only
> > 2. Then it runs "say $i" for each of $x.lines()[3,2,5] - but $x is only
> "Line 0" so it says 3 x "Nil"
> > 3. Repeat for "Line 1", etc
> > -y
> >
> >
> > On Thu, Aug 27, 2020 at 1:40 PM ToddAndMargo via perl6-users <
> perl6-us...@perl.org> wrote:
> >>
> >> On 2020-08-27 13:28, Tobias Boege wrote:
> >> > On Thu, 27 Aug 2020, ToddAndMargo via perl6-users wrote:
> >> >> To pick out particular lines:
> >> >>     $ cat Lines.txt | raku -e '.say for lines()[3,2,5]'
> >> >>     Line 3
> >> >>     Line 2
> >> >>     Line 5
> >> >>
> >> >> If it is, it is buried somewhere.
> >> >>
> >> >> And what goes inside the ()?  That may seem like a dumb
> >> >> remark (especially since I live and die in Top Down and
> >> >> know very well what the () does) but it is a common mistake
> >> >> I make with lines is forgetting the () when using the [].
> >> >>
> >> >
> >> > How does that mistake manifest? I cannot see a way in which omitting
> >> > the sub call parentheses in code like that could possibly lead to some
> >> > different behavior.
> >> >
> >>
> >> Here is does not:
> >>
> >> $ cat Lines.txt | raku -e '.say for lines[3,2,5]'
> >> Line 3
> >> Line 2
> >> Line 5
> >>
> >> And I am having trouble reproducing the issue.  Would
> >> help my point, no?  I will write back if I find it.
> >> Usually I forget my mistakes as soon as I figure out
> >> the right way to do things.
> >>
> >> Now this is getting weird!
> >>
> >> $ cat Lines.txt | raku -ne 'my $x=$_; say $x; for $x.lines()[3,2,5] ->
> >> $i {say $i;}'
> >>
> >> Line 0
> >> Nil
> >> Nil
> >> Nil
> >> Line 1
> >> Nil
> >> Nil
> >> Nil
> >> Line 2
> >> ...
>

Reply via email to