4

これを持っている:

use utf8;
package ÁngryBird;   #note the Á in the package name

perl -c結果はsyntax OKです。

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.

では、コードの何が問題になっていますか?

4

2 に答える 2

8

Mooseパッケージ名をチェックするためにからこの正規表現を使用します:Package::Stash::PP

elsif ($package !~ /\A[0-9A-Z_a-z]+(?:::[0-9A-Z_a-z]+)*\z/) {
    confess "$package is not a module name";
}

またはこの正規表現からPackage::Stash::XS

const char *vmre = "\\A[0-9A-Z_a-z]+(?:::[0-9A-Z_a-z]+)*\\z";

ただし、名前空間に独自のパッケージstashインプリメントを作成し、ロードする前にPackage::Stash環境変数PACKAGE_STASH_IMPLEMENTATIONまたは変数を設定して使用することもできます。たとえば、実装に名前がある場合は、変数をに設定します。$Package::Stash::IMPLEMENTATIONPackage::StashPackage::Stash::MyMy

于 2012-06-26T14:13:10.150 に答える
1

Class::MOPバグのようです。そこで質問したり、バグを報告したりしましたか?

于 2012-06-26T14:13:21.447 に答える