<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><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>