in reply to Malformed UTF-8

So what's in $term and which version of perl are you using? I can't reproduce your problem:

use strict; use warnings; use Devel::Peek 'Dump'; my $token = "ba\x{f1}o"; utf8::upgrade($token); Dump($token); my $term = $token; # note: i have no clue what's in $term print "match\n" if $token =~ /^$term/i;
update: output from that:
SV = PV(0x814d988) at 0x814d524 REFCNT = 1 FLAGS = (PADBUSY,PADMY,POK,pPOK,UTF8) PV = 0x8160848 "ba\303\261o"\0 [UTF8 "ba\x{f1}o"] CUR = 5 LEN = 6 match
update2: changed code so that $token and $term are the same. does not influence the outcome at all.

Replies are listed 'Best First'.
Re^2: Malformed UTF-8
by spiros (Beadle) on May 15, 2007 at 17:10 UTC
    Thank you for your reply. This is perl -v :
    This is perl, v5.8.6 built for darwin-thread-multi-2level (with 2 registered patches, see perl -V for more detail)
    (let me know if you need a -V output) $term contains 'baņo'. This is the Dump for $term before the error:
    SV = PVIV(0x18b8e20) at 0x1ab69c8 REFCNT = 1 FLAGS = (PADBUSY,PADMY,POK,pPOK) IV = 0 PV = 0x2dd2ef0 "ba\303\261o"\0 CUR = 5 LEN = 12
    Actually, this is weird, I just realized, this error occurs when they match since both $token and $term are identical (or should be at least). Hm.
        bunny:/tmp spiros$ perl u.pl SV = PV(0x1801460) at 0x180bcf0 REFCNT = 1 FLAGS = (PADBUSY,PADMY,POK,pPOK,UTF8) PV = 0x30f160 "ba\303\261o"\0 [UTF8 "ba\x{f1}o"] CUR = 5 LEN = 6 match
        What does the utf8 upgrade function do?