我正在使用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