On 2023-04-06 08:45, demerphq wrote:
Although this causes pcre2grep to mishandle Unicode characters:

    $ echo 'Ævar' | pcre2grep '[Ssß]'
    Ævar

it mimics Perl 5.36:

    $ echo 'Ævar' | perl -ne 'print $_ if /[Ssß]/'
    Ævar

so this seems to be what Perl users expect, despite its infelicities.
Actually no, I think you have misunderstood what is happening at the
different layers involved here.

No, I understood what was going on. My point was that Perl users seem to have accepted this behavior, even though it does not match what people would ordinarily expect.


What you should have done is something like this:

No, for two reasons. First, I'm no Perl expert and so I don't know (and don't particularly want to learn) its complicated Unicode options and calls. Second, /[Ss\x{DF}]/u is hard to read. If I want the S letters of traditional German, I'll write them in the obvious way, as [Ssß]. No doubt Perl will let me do this somehow - but it is telling that none of your examples do it in such a straightforward way.

$ echo 'Ævar' | perl -ne 'utf8::decode($_); print $_ if /[Ss\x{DF}]/u'
$ echo 'baß' | perl -MEncode -ne 'utf8::decode($_); print
encode_utf8($_) if /[Ss\x{DF}]/u'
baß
$ echo 'Ævar' | perl -MEncode -ne 'utf8::decode($_); print
encode_utf8($_) if /[Ss\x{C6}]/u'
Ævar
$ echo 'Ævar' | perl -MEncode -ne 'utf8::decode($_); print
encode_utf8($_) if /[Ss\x{e6}]/ui'
Ævar





Reply via email to