我正在使用Params::Validate进行验证,但在回调部分而不是定义直接匿名函数时,如果我尝试给出该匿名函数的引用,它将直接跳至错误记录区域,而不在块内打印消息(在传递正确值的情况)。为什么Params :: Validate回调失败的匿名函数引用?
use Params::Validate qw(:all);
our $attributeCallback = sub {
my $parameter = shift;
$parameter =~ m/^\w+$/i ;
};
sub getSingleValue {
eval {
my ($domainName, $attribute) = validate_pos(@_,
{
type => SCALAR,
callbacks => {
'Domain name validation failed' => &$attributeCallback
}
},
{
type => SCALAR,
callbacks => {
'Attribute name validation failed' => sub {
$_[0] =~ m/[\w.-]+$/i }
}
}
);
print "domain name is $domainName and attribute is $attribute";
1;
}
or do {
# catch
# Error Logging Area
};
}
记录实际的错误是一样的东西“未定义的子程序” ...
谁能告诉为什么会出现这种情况呢?
你的错误将是立即可见,如果你已经缩进你人类阅读代码。 – 2010-02-11 15:46:35
@SinanÜnür:这是怎么回事?错误是一种与缩进无关的误解。 – ysth 2010-02-11 18:17:21
@ysth我发现越来越模糊的小额外符号在右边缘(或以扭曲的方式缠绕)越难以意识到它们在那里。 – 2010-02-11 22:05:29