Some more examples:

~$ raku -e 'put "1\n2\n3";' | raku -e 'lines.contains(/ \h /).put;'
True
~$ raku -e 'put "1\02\03";' | raku -e 'lines.contains(/ \h /).put;'
False
~$ raku -e 'put "1\02\03";' | raku -e 'lines.contains(/ 12 /).put;'
False
~$ raku -e 'put "1\02\03";' | raku -e 'lines.contains(/ "1 2" /).put;'
False
~$

So what I don't understand is how`.contains` coerces  `\0` null-separated
strings to a `Str` without whitespace, but coerces  `\n` newline-separated
strings to a `Str` with whitespace. Furthermore, it seems that `\0`
null-separated strings are correctly processed so that concatenation
artifacts such as "12" string or "1 2" string are not produced.

And if  `.contains` can coerce `\0` null-separated strings to a Str without
whitespace, can't it do the same for `\n` newline separated strings? What
am I missing?

Best Regards, Bill.

PS. Typo:  of course, that title should read 'horizontal', not 'horizonal'.

On Thu, Jan 26, 2023 at 3:40 PM William Michels <w...@caa.columbia.edu>
wrote:

> Thanks Sean.
>
> Made some progress. I like this result better:
>
> ~$ raku -e 'put "1\n2\n3";' | raku -e 'lines.map(*.contains(/ \h /)).put;'
> False False False
>
> Thx, Bill.
>
> On Thu, Jan 26, 2023 at 12:12 PM Sean McAfee <eef...@gmail.com> wrote:
>
>> On Thu, Jan 26, 2023 at 12:05 PM William Michels via perl6-users <
>> perl6-us...@perl.org> wrote:
>>
>>> ~$ raku -e 'put "1\n2\n3";' | raku -e 'put lines.contains(/ \h /) ??
>>> True !! False;'
>>> True
>>>
>>
>> lines() returns a Seq.  The contains method for a Seq coerces its
>> argument to a Str and calls contains on that Str.  And:
>>
>> $ raku -e 'put "1\n2\n3"' | raku -e 'put lines.Str'
>> 1 2 3
>>
>> There's your horizontal whitespace.
>>
>>

Reply via email to