Silence “Wide character” warning globally o ne time
[email protected] (Dan Muey) Thu, 29 Jul 2010 16:59:27 -0500
| Newsgroups | perl.unicode |
|---|---|
| Message-ID | <[email protected]> |
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