有这种情况:
use utf8;
package ÁngryBird; #note the Á in the package namesyntax OK.结果为perl -c
use utf8;
package ÁngryMoose;
use Moose;perl -c说,
ÁngryMoose is not a module name at
/opt/local/lib/perl5/site_perl/5.12.4/darwin-multi-2level/Class/MOP/Package.pm
line 209.那么,代码有什么问题吗?
发布于 2012-06-26 14:13:10
Moose使用来自Package::Stash::PP的这个regexp来检查包名:
elsif ($package !~ /\A[0-9A-Z_a-z]+(?:::[0-9A-Z_a-z]+)*\z/) {
confess "$package is not a module name";
}或这个regexp来自Package::Stash::XS
const char *vmre = "\\A[0-9A-Z_a-z]+(?:::[0-9A-Z_a-z]+)*\\z";但是您可以在命名空间可能会创建您自己的包存储包。中使用Package::Stash,并在加载Package::Stash之前通过设置环境变量PACKAGE_STASH_IMPLEMENTATION或变量$Package::Stash::IMPLEMENTATION来使用它。例如,如果您的实现有名称Package::Stash::My,那么将变量设置为My。
发布于 2012-06-26 14:13:21
听起来可能是Class::MOP的错误。你有没有问过,或者报告过窃听器?
https://stackoverflow.com/questions/11208310
复制相似问题