Hello all,
I've a situation where a large code base will be outputting "byte strings" and
"unicode strings" from a number of sources.
I essentially need to do
no warnings "utf8";
but I need to do it one time and globally instead of limiting to a package or
some scope.
Is there a way to have the same effect as "no warnings 'utf8';" universally
without the need to do it in every package and scope?
Here is a simplified version of the problem:
[ -- Problem: Unicode string gives warning -- ]
perl -le 'print "Think before you code™ (bytes string)";print "Hello
\x{201C}World\x{201D} (Unicode String)";'
adding either of these doesn't change the effect:
$ENV{LC_CTYPE} = "UTF-8";
${^WIDE_SYSTEM_CALLS} = 1;
[ -- Partial solution but new problem: Warning goes away but byte string has
garbled trademark character -- ]
perl -le 'binmode STDOUT, "utf8";print "Think before you code™ (bytes
string)";print "Hello \x{201C}World\x{201D} (Unicode String)";'
PERL_UNICODE=6 perl -le 'print "Think before you code™ (bytes
string)";print "Hello \x{201C}World\x{201D} (Unicode String)";'
[ -- this has no warning and no garbled characters but it is impractical to
impossible to do the pragma everywhere ti might be necessary -- ]
perl -le 'no warnings "utf8";print "Think before you code™ (bytes
string)";print "Hello \x{201C}World\x{201D} (Unicode String)";'
[ -- ideal solution -- ]
Since we use our localization module everywhere that will have \x{} notationo
I'd like to do whatever needs done in its begin block.
Is there any super voo doo that can be done?
Thanks in advance for any input!
--
Dan - cPanel.net