[Moscow.pm] utf8

artur+moscow.pm.org на niif.spb.su artur+moscow.pm.org на niif.spb.su
Пн Окт 13 13:23:35 PDT 2014


14.10.2014, 00:18, "Nikolay Mishin" <mi на ya.ru>:
> клевая конструкция -CSA
> а что это?

  Рассматривает STDIN, STDOUT, STDERR и @ARGV как utf8.

> работает!!
>
> 14.10.2014, 00:07, "artur+moscow.pm.org на niif.spb.su" <artur+moscow.pm.org на niif.spb.su>:
>>  13.10.2014, 23:51, "Nikolay Mishin" <mi на ya.ru>:
>>>   Дорогие перломаны и перлознаи, как любил говорить мой хороший знакомый,
>>>   Приходит мне на вход строка (https://github.com/mishin/presentation/blob/master/show_utf.pl)
>>>   вида
>>>   \(42f) \(43b)\(44e)\(431)\(43b)\(44e) \(41f)\(435)\(440)\(43b)
>>>   - (так utf экспортируется в dsx в IBM Datastage)
>>>   ну я ее преобразую к виду
>>>   \x{42f} \x{43b}\x{44e}\x{431}\x{43b}\x{44e} \x{41f}\x{435}\x{440}\x{43b}
>>>
>>>   my $utf_str_2 =
>>>     "\(42f) \(43b)\(44e)\(431)\(43b)\(44e) \(41f)\(435)\(440)\(43b)";
>>>   $utf_str_2 =~ s/\((\w+)\)/\\x{$1}/g;
>>>
>>>   вот код
>>>
>>>   #!/usr/bin/env perl
>>>   use utf8;
>>>   use Modern::Perl;
>>>   use Encode::Locale;
>>>   use Data::Dumper qw( Dumper );
>>>   if (-t) {
>>>   binmode( STDIN, ":encoding(console_in)" );
>>>   binmode( STDOUT, ":encoding(console_out)" );
>>>   binmode( STDERR, ":encoding(console_out)" );
>>>   }
>>>   my $love = "Я люблю Перл";
>>>   print Dumper ($love);
>>>   my $utf_str =
>>>   "\x{42f} \x{43b}\x{44e}\x{431}\x{43b}\x{44e} \x{41f}\x{435}\x{440}\x{43b}";
>>>   $utf_str =~ s/\\x\{(\w+)\}/\($1)/g;
>>>   say "$utf_str";
>>>   my $utf_str_2 =
>>>   "\(42f) \(43b)\(44e)\(431)\(43b)\(44e) \(41f)\(435)\(440)\(43b)";
>>>   $utf_str_2 =~ s/\((\w+)\)/\\x{$1}/g;
>>>   say 1;
>>>   say $utf_str_2;
>>>   но интересно, что если
>>>   у тебя есть строка
>>>   $a="\x{42f}";
>>>   say $a;
>>>   то say выведет "Я"
>>>   но если
>>>   у тебя происходят преобразования
>>>   и сама строка становится
>>>   "\x{42f}" после
>>>   $a="\(42f)";
>>>   $a =~ s/\((\w+)\)/\\x{$1}/g;
>>>   то
>>>   say $a;
>>>   выводит "\x{42f}"
>>>   вопрос (тем, кто дочитал;))
>>>   как сделать так, чтобы напечаталась "Я" ??
>>    # perl -CSA -lnpe 's#\\\((...)\)#chr(hex$1)#gsme'
>>    \(42f) \(43b)\(44e)\(431)\(43b)\(44e) \(41f)\(435)\(440)\(43b)
>>    Я люблю Перл
>>
>>  --
>>  wbw, artur
>>  --
>>  Moscow.pm mailing list
>>  moscow-pm на pm.org | http://moscow.pm.org
>
> --
> С уважением
> Николай Мишин
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org

-- 
wbw, artur


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