Использование интернациональных имен

К своему удивлению, обнаружил возможность
использования non-ASCII символов при определении
имен переменных, функций и т.д.

Ранее некогда, пытался сделать аналогичное, но
в однобайтной кодировке, не получилось. Не помог
даже use encoding «cp1251»; (

Оказалось -
Нужно было работать в кодировке utf8 в исходнике!

use utf8;
use encoding «utf8»;
sub Привет
{
 print «Привет Мир!»;
}
Привет;
$йцукенгшщзхъфывапролджэячсмитьбюё = «1»;
$ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮЁ = «2»;
print $йцукенгшщзхъфывапролджэячсмитьбюё +
 $ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮЁ;

Кстати, ещё по поводу use encoding «cpXXX»;
это стандартный способ указания текущей кодировки
(определение текущей локали, и не надо никаких posix)

use open «:utf8»; # прагма для открытия файлов на работу с utf8
use encoding «cp1251»; # сообщаем, что последующие строки в исходнике
 # представлены в кодировке cp1251 (Win)
open (LOG, «>log»); # открываем новый файл
print LOG «Привет из Виндовс!»;
close(LOG);
use encoding «cp866»; # меняем кодировку в исходнике на cp866 (DOS)
open (LOG, «>>log»); # добавляем в файл новые строки
print LOG «?аЁў?в Ё "?' !";
close(LOG);
use encoding «koi8-r»; # меняем кодировку в исходнике на koi8-r (Unix)
open (LOG, «>>log»); # добавляем в файл новые строки
print LOG «рТЙЧЕФ ЙЪ аОЙЛУБ!»;
close(LOG);

На выходе файл в UTF8 с корректно распознанными национальными строками.

Кроме того, таким аналогичным образом работаем с tk и wxWidgets.
Так в tk если наш исходник в cp1251 ставим use encoding «cp1251»;

Все очень здорово и замечательно! Не открываю Америку, но может кому нужно.

— Perl не определяет стандартного способа сделать что либо!

Представил что

Представил что надо разобраться в исходнике, который писал к примеру китаец (и использовал свои - родные имена переменных) =)

------------------

#!/usr/bin/perl
print("goto rulez!!!!!!1");

Так сделаем-же

Так сделаем-же имена страшней китайских! ;)

Смайлик

В свое время, когда в perl появился нормальная поддержка utf8, появилась мысль придать коду эмоциональную окраску! :-) Но символ смайлик, это не буква, поэтому его нельзя использовать в названиях переменных и подпрограмм. :-(

"все давно придумано до нас"

смайлик += 1;
sub смайлик {
  return 1;
}

насчет энкодинга текста

А насчет энкодинга текста, сейчас уже в большинстве случаев удобно все внутри программы делать в utf-8, а только на входе и выходе с миром переводить в соответствующую кодировку.

- удобство в том что utf-8 знают все приличные редакторы и СУБД, и не возникает вопросов ни с европейскими буквами ни с всякими значками вроде евро.

too_☺

simne написал
смайлик += 1;
sub смайлик {
  return 1;
}

Нет, интересней было бы так:
sub too_☺ {}

...

sub Привет
{
 print «Привет Мир!»;
}
Привет;

# так правильнее!
&Привет;