perl – Moose \u0026\u0026 utf8(包|方法)的名字

前端之家收集整理的这篇文章主要介绍了perl – Moose \u0026\u0026 utf8(包|方法)的名字前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有这个:

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

perl -c结果是语法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.

那么,代码中有什么问题?

解决方法

Moose使用Package :: Stash :: PP中的 this regexp来检查包名:

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

或者来自Package :: Stash :: XS的this regexp

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

但是你在命名空间Package :: Stash中使用may create your own package stash inplementation,并在加载Package :: Stash之前通过设置环境变量PACKAGE_STASH_IMPLEMENTATION或变量$Package :: Stash :: IMPLEMENTATION来使用它.例如,如果您的实现具有名称Package :: Stash :: My,则将变量设置为My.

猜你在找的Perl相关文章