我刚开始使用Moose。
我正在创建一个简单的通知对象,并想检查输入是否属于“电子邮件”类型。(暂时忽略简单的正则表达式匹配)。
从文档中我认为它应该类似于以下代码:
# --- contents of message.pl --- #
package Message;
use Moose;
subtype 'Email' => as 'Str' => where { /.*@.*/ } ;
has 'subject' => ( isa => 'Str', is => 'rw',);
has 'to' => ( isa => 'Email', is => 'rw',);
no Moose; 1;
#############################
package main;
my $msg = Message->new(
subject => 'Hello, World!',
to => 'coolkids@example.com'
);
print $msg->{to} . "\n";
但我收到以下错误:
在 message.pl 第 5 行,“subtype 'Email'”附近的操作员预期的位置找到字符串 (你需要预先声明子类型吗?) 在 message.pl 第 5 行,“as 'Str'”附近的操作员预期的位置找到字符串 (您需要预先声明为吗?) message.pl 第 5 行的语法错误,靠近“子类型‘电子邮件’” 错误后 BEGIN 不安全——编译在 message.pl 第 10 行中止。
有人知道如何在 Moose 中创建自定义电子邮件子类型吗?
Moose 版本:0.72 perl 版本:5.10.0,平台:linux-ubuntu 8.10