Hi,

I nearly finished Config::Scoped, yet another config
file parser but I am currently busy with an annoying
locale problem. I'm for example not able to match
german umlaute with the rule pattern /\w/ even with
the proper LC_... env and 'use locale' in P::RD.

With a plain pattern match 'string' =~ /\w+/ it's working!

Please check my stripped down code snippet:

#-------- locale_test.pl --------------------
use locale;
use Parse::RecDescent;

$grammar = 'char : /\w/ {print "P::RD $item[1] matched\n"}';

Parse::RecDescent->new($grammar)->char('ä')
    or warn "P::RD ä didn't match\n";

Parse::RecDescent->new($grammar)->char('a')
    or warn "P::RD a didn't match\n";

# and now with plain regexp
'ä' =~ /\w/ ? print "/\\w/ ä matched\n"
            : warn  "/\\w/ ä didn't match\n";

'a' =~ /\w/ ? print "/\\w/ a matched\n"
            : warn  "/\\w/ a didn't match\n";

exit 0;
#----------------------------------------------

and with the proper LC_CTYPE set:

wega$ LC_CTYPE=iso_8859_1 perl locale_test.pl
P::RD ä didn't match
P::RD a matched
/w/ ä matched
/w/ a matched


you see, with /\w/ we match the german umlaut 'ä' but not as a pattern literal in P::RD.

And for completeness:
=====================
This is perl, v5.8.4 built for sun4-solaris
P::RD::VERSION = '1.94'
wega$ locale -a
POSIX
C
iso_8859_1

Any hints welcome, perhaps I don't see the wood
for the trees.

Best Regards
        Charly

--
Karl Gaissmaier       KIZ/Infrastructure, University of Ulm, Germany
Email:[EMAIL PROTECTED]           Service Group Network



Reply via email to