<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">24.04.2015 19:54, Denis Ibaev пишет:<br>
    </div>
    <blockquote
cite="mid:CAG=DCOeiotBu1LA-Hw7+uoUa_4Mx3afi12mRepBWd5LBy3OBmQ@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div>
          <div>Привет.<br>
            <br>
            Не могу понять, почему в одном случае ниже приведённый
            скрипт выставляет у строки флаг utf8, а в другом нет. Без
            прагмы encoding такого эффекта не наблюдается. Может
            кто-нибудь объяснить?<br>
            <br>
            Вывод скрипта:<br>
            <br>
            v1 is utf-8 = 0<br>
            v2 is utf-8 = 0<br>
            v1 is utf-8 = 1<br>
            v2 is utf-8 = 0<br>
          </div>
        </div>
      </div>
    </blockquote>
    <br>
    1) Без прагмы "use encoding 'utf-8'" chr() никогда флаг не ставит
    (точнее до 255)<br>
    2) С прагмой если код cимвола  < 128 chr флаг ставит, c 128 до
    255 не ставит, а более 255 ставит.<br>
    <br>
    В принципе какая то логика в этом есть, если считать что chr до 255
    должно возвращать latin-1, но кмк кривая. <br>
    <br>
    Может можно:<br>
    1)  починить c помощью use bytes<br>
    2)  или испытать магию GLOBAL::CORE::chr = ...<br>
    3) BEGIN{ $INC{"encoding.pm"} = "Janky go home" } перед загрузкой
    твоего модуля.<br>
    <br>
    <br>
    <br>
    <br>
    <blockquote
cite="mid:CAG=DCOeiotBu1LA-Hw7+uoUa_4Mx3afi12mRepBWd5LBy3OBmQ@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div>
          <div><br>
          </div>
          Сам скрипт:<br>
          <br>
          use strict;<br>
          use warnings;<br>
          use v5.12;<br>
          use utf8;<br>
          <br>
          use encoding 'utf-8';<br>
          <br>
          my $v1 = '';<br>
          my $v2 = '';<br>
          <br>
          utf8::downgrade($v1);<br>
          utf8::downgrade($v2);<br>
          <br>
          say 'v1 is utf-8 = ', utf8::is_utf8($v1) || 0;<br>
          say 'v2 is utf-8 = ', utf8::is_utf8($v2) || 0;<br>
          <br>
          $v1 .= chr(hex($_)) for qw(22 D0);<br>
          $v2 .= chr(hex($_)) for qw(D0);<br>
          <br>
          say 'v1 is utf-8 = ', utf8::is_utf8($v1) || 0;<br>
          say 'v2 is utf-8 = ', utf8::is_utf8($v2) || 0;<br>
          <br>
        </div>
        <div>Окружение:<br>
        </div>
        <div><br>
          $ perl -v<br>
          This is perl 5, version 14, subversion 2 (v5.14.2) built for
          x86_64-linux-gnu-thread-multi<br>
          (with 57 registered patches, see perl -V for more detail)<br>
          <br>
          $ perl -MEncode -E 'say Encode->VERSION'<br>
          2.73<br>
          <br>
          -- <br>
        </div>
        Денис Ибаев<br>
        <br>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
    </blockquote>
    <br>
  </body>
</html>