背景:
我希望创建一个包含一些供个人使用的模块的发行版——它永远不会出现(又名。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
问题。