UTF-8 в имени модуля Perl - PullRequest
       6

UTF-8 в имени модуля Perl

1 голос
/ 19 апреля 2011

Как я могу написать модуль Perl с UTF-8 в его имени и имени файла? Моя текущая попытка выдает «Не удается найти Täst.pm в @INC», но файл существует. Я на Windows, и еще не пробовал это на Linux.

test.pl * * 1004

use strict;
use warnings;
use utf8;
use Täst;

Täst.pm

package Täst;
use utf8;

Обновление : Мой текущий обходной путь так: use Tast (ASCII) и поместите package Täst (Unicode) в Tast.pm (ASCII). Хотя это сбивает с толку.

Ответы [ 4 ]

3 голосов
/ 19 апреля 2011

К сожалению, имена файлов Perl, Windows и Unicode в настоящий момент не совпадают. Мой совет - избавить себя от лишних хлопот и придерживаться простого ASCII для имен модулей. В этом сообщении в блоге упоминаются некоторые проблемы.

3 голосов
/ 19 апреля 2011

use utf8 должен появляться перед package Täst, чтобы последний мог быть правильно интерпретирован.На моем Mac:

test.pl:

#!/usr/bin/perl

use strict;
use warnings;

use utf8;
use Tëst;

# 'use utf8' only indicates the code's encoding, but we also want stdout to be utf8
use encoding "utf8";

Tëst::hëllö();

Tëst.pm:

use utf8;
package Tëst;

sub Tëst::hëllö() {
    print "Hëllö, wörld!\n";
}

1;

Вывод:

Macintosh:Desktop sherm$ ./test.pl 
Hëllö, wörld!

Как я уже говорилхотя - я запускал это на своем Mac.Как сказано выше в cjm, ваш пробег может отличаться в Windows.

2 голосов
/ 20 апреля 2011

Поддержка Unicode часто терпит неудачу на границах.Имена пакетов и подпрограмм должны четко отображаться на имена файлов, что проблематично в некоторых операционных системах.Мало того, что ОС должна создавать имя файла, которое вы ожидаете, вы также сможете найти его позже с тем же именем.

Мы немного поговорили о проблеме имени файла в Effective PerlПрограммирование , но я также суммировал гораздо больше в Как мне создать, а затем использовать длинные пути Windows из Perl? .Джефф Этвуд упоминает об этом как часть своего поста в своих Пути к файловой системе: как долго это слишком долго? .

1 голос
/ 19 апреля 2011

Я бы не рекомендовал такой подход, если это программное обеспечение, которое вы планируете выпустить, если честно. Даже если у вас это работает нормально, оно может быть несколько хрупким на машинах, где UTF-8 настроен неправильно и / или имена файлов могут не содержать символов UTF-8 и т. Д.

...