【发布时间】:2013-01-17 01:05:53
【问题描述】:
背景:
我希望创建一个包含一些供个人使用的模块的发行版——它永远不会出现(又名 CPAN)。我想使用Module::Starter 启动这些模块,以利用简单的测试和版本管理。
(Ubuntu GNU/Linux 上的 perl 5.12.4)
问题:
如何在 Module::Starter 中使用 Unicode 文件名,例如Local::Λ← (Lambda)?
这不起作用:
$ module-starter --module Local::Λ
Invalid module name: Local::Λ at /usr/local/share/perl/5.12.4/Module/Starter/App.pm line 132.
实际失败的行是
croak "Invalid module name: $_" unless /\A[a-z_]\w*(?:::[\w]+)*\Z/i;
在Module::Starter::Simple(第 95 行)中。
Lambda 显然是一个“单词”字符。
顺便说一句,这行得通:
$ cat > xΛ.pm
use utf8;
package xΛ;
sub foo { print "42\n" }
1;
^D
$ perl -Mutf8 -MxΛ -e 'xΛ::foo()'
42
$
我还没有尝试过的事情:
- 花一天时间编译 perl 5.16 以获得更多 unicode 优点。
- 从源头上破解,并启用远程连接到 unicode 的任何东西。
- 检查这不仅仅是对发行版名称的限制(我并不担心,因为 CPAN 永远不会看到这一点)。
- 检查这是否是
Getopt::Long问题。
【问题讨论】:
标签: perl unicode perl-module