in reply to Unexpected utf8 in hash keys

Actually, the issue really is the use utf8 which allows you to use utf8 in your program identifiers. For instance:

use strict; use warnings; my %hash = ( asd => 1 ); sub ff { print utf8::is_utf8($_[0]) ? 1 : 0, "\n"; } eval { use utf8; ff(%hash); # now prints 0 };

I suppose it's reasonable that perl encodes barewords as utf8 if you use utf8 even if only ascii characters are involved.

Update: from the utf8 documentation:

The "use utf8" pragma tells the Perl parser to allow UTF-8 in the pro- gram text in the current lexical scope (allow UTF-EBCDIC on EBCDIC based platforms). ... Do not use this pragma for anything else than telling Perl that your script is written in UTF-8. The utility functions described below are useful for their own purposes, but they are not really part of the "pragmatic" effect.

Replies are listed 'Best First'.
Re^2: Unexpected utf8 in hash keys
by kappa (Chaplain) on Feb 20, 2008 at 15:01 UTC
    We actually use lots of non-ASCII strings so we need use utf8.
    --kap