从eval
中尝试使用die
时,我遇到了一个恼人的问题。鲤鱼:在sassign ARRAY的奇异副本。任何修复?
的代码如下;
$status = eval { $self->$func(@{$y->{args}}); };
在这种情况下
$self->$func
指向分离到某个页面上的错误这样的处理程序
:
sub detach
{
my $self = shift;
my $url = shift;
my @params = @_;
if($url !~ /^\//)
{
$url = '/' . $self->namespace . '/' . $url;
}
$url =~ s/\sat.*$//;
print STDERR $self->uri . ": Detaching to " . $url . "\n";
die "REDIR:$url";
}
这应该地方"REDIR:$url"
为[email protected]
所以它提供的eval
退出时。
然而,可替换Carp.pm死了,我想在某处的die
的内部与
Bizarre copy of ARRAY in sassign at /usr/share/perl/5.10/Carp.pm line 182
放眼望去有一些建议,有一个bug深有关堆栈的Perl在死亡期间(例如,http://code.activestate.com/lists/perl5-porters/149248/),但是我担心在这一点上我处于我对perl知识的极限,我不确定这是否相关,或者如果是这样的话该怎么办。 :(
有没有人知道是否有解决此问题的方法或另一种方式从eval
传回错误字符串,或者如果我正确读取此错误?
你能提供一个工作的例子吗? – perreal 2012-07-22 10:52:35
我试过把代码放到一个例子中,但它工作正常,这导致我认为这是与我引用的文章有关。当时我想我可能会有一个旧版本的鲤鱼,但是这是最新的。如果我有成功的话,我会继续尝试找出一个失败的例子并发布。 – mark 2012-07-22 11:41:07
尝试用[当前稳定版本](http://www.perl.org/get.html)重现问题;如果你成功了,[提交bug](http://p3rl.org/bug)。你的5.10版本比较旧,[不支持](http://perldoc.perl.org/perlpolicy.html#MAINTENANCE-AND-SUPPORT),这个bug已经被修正了。 – daxim 2012-07-22 17:02:26