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