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 > >> ... >