[Moscow.pm] use utf8 vs no use utf8

Гнатына Александр gnatyna на ya.ru
Ср Июл 29 01:53:33 PDT 2009


perl -le 'use utf8; use Data::Dump "pp"; do{ use utf8;  print pp $::utf8::
{AUTOLOAD};my $s="привет"; print pp utf8::is_utf8($s); print pp $s; }'
*utf8::AUTOLOAD
1
"\x{43F}\x{440}\x{438}\x{432}\x{435}\x{442}"

perl -le 'use utf8; use Data::Dump "pp"; do{no utf8;  print pp $::utf8::
{AUTOLOAD};my $s="привет"; print pp utf8::is_utf8($s); print pp $s; }'
*utf8::AUTOLOAD
""
pack("H*","d0bfd180d0b8d0b2d0b5d182")

Может так попробовать угадывать? Хотя это грубо, сам я не проверял другие 
возможные варианты для is_utf8.

On 29 июля 2009 11:11:53 Dmitry E. Oboukhov wrote:
> ГА> Если в коде не было use utf8; или no utf8; то $::utf8::{AUTOLOAD} будет
> undef.
>
> а если был no utf8?
>
> то есть хочу такого:
>
> use utf8;
> use Package;
>
> my $string = MyPackage::foo;  # - тут юникодная строка
>
> {
>     no utf8;
>     my $string2 = MyPackage::foo; # - тут encoded utf8-строка
> }
>
> ГА> On 28 июля 2009 20:53:51 Dmitry E. Oboukhov wrote:
> >> навеяло темой про CGI :)
> >>
> >> по работе иногда приходится писать модули для тулзовин написанных во
> >> времена царя гороха, которые без использования use utf8 работают и
> >> если им тудыть эту директиву вставить то придется очень много
> >> переделывать
> >>
> >> ну и в общем допустим пишем мы пакет
> >>
> >> package MyPackage;
> >> sub foo
> >> {
> >>     ...
> >>     return $string;
> >> }
> >>
> >> есть ли возможность модулю в котором есть директива use utf8 вернуть
> >> utf-строку, а модулю (вообще говоря блоку) который не содержит оной
> >> директивы вернуть простую байтовую строку?
> >>
> >> то есть что-то в духе
> >>
> >> sub foo
> >> {
> >>     ...
> >>     return is_caller_utf8 ? $string : encode utf8 => $string;
> >> }
> >> --
> >> ... mpd paused: Manowar - Call To Arms
> >>
> >> . ''`.                               Dmitry E. Oboukhov
> >>
> >> : :’  :   email: unera на debian.org jabber://UNera@uvw.ru
> >>
> >> `. `~’              GPGKey: 1024D / F8E26537 2006-11-21
> >>   `- 1B23 D4F8 8EC0 D902 0555  E438 AB8C 00CF F8E2 6537
>
> --
> ... mpd playing: Manowar - Hand Of Doom
>
> . ''`.                               Dmitry E. Oboukhov
>
> : :’  :   email: unera на debian.org jabber://UNera@uvw.ru
>
> `. `~’              GPGKey: 1024D / F8E26537 2006-11-21
>   `- 1B23 D4F8 8EC0 D902 0555  E438 AB8C 00CF F8E2 6537

-- 
С уважением, Гнатына Александр.



Подробная информация о списке рассылки Moscow-pm