考虑到retrys给定函数某些给定的次数,如果函数抛出下面的包装函数(不知道为什么格式是靠不住的):这个perl包装函数可以扩展到任何输入函数吗?
sub tryit{
my $fun = shift;
my $times = shift;
my @args = @_;
my $ret;
do{
$times--;
eval{
$ret = $fun->(@args);
};
if([email protected]){
print "Error attemping cmd: [email protected]\n";
}
else{
return $ret;
}
}while($times > 0);
return;
}
这怎么可能延长,使的返回值无论返回什么样的值,参数函数都可以正确地得到支持。例如,这个函数不会正确传递数组。你不能只返回$ fun - >(),因为return只会将你带出eval块。
你能提供更多关于这个问题的细节吗?例如,当返回值是一个数组时,会发生什么? – Greg 2011-05-30 23:54:48
@greg如果返回值是一个数组,那么$ ret被赋值为最后一个元素 – frankc 2011-05-31 00:19:43
函数的返回值从不是数组。它可能是一个列表或对数组的引用。 – tadmc 2011-05-31 03:37:14