鲤鱼:在sassign中的ARRAY的奇怪副本。任何修复?

时间:2012-07-22 10:29:34

标签: perl die carp

die内尝试eval时,我遇到了一个恼人的问题。

代码如下;

$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"放入$@,以便在eval退出时可用。

然而,相反Carp.pm去世,我假设在die的内部与

的某处
Bizarre copy of ARRAY in sassign at /usr/share/perl/5.10/Carp.pm line 182

环顾四周有一些暗示在perl中有一个与堆栈有关的错误(例如http://code.activestate.com/lists/perl5-porters/149248/),但是我担心此时我处于知识的极限perl和我不确定这是否相关,或者如果是的话该怎么办。 :(

有没有人知道是否有解决此问题的方法或从eval传回错误字符串的其他方法,或者我是否正在错误地阅读?

2 个答案:

答案 0 :(得分:1)

这听起来像#52610。您是否正在使用任何可能成为调试器的模块?

答案 1 :(得分:1)

这对我使用的Perl版本来说是一个问题。 升级到5.16.1解决了这个问题。