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