1

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が死ぬ代わりに、diewithの内部のどこかにあると思います

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かどうか、またはこれを間違って読んでいるかどうかを誰かが知っていますか?

4

2 に答える 2

1

これは私には#52610のように聞こえます。原因となる可能性のあるデバッガーにフックするモジュールを使用していますか?

于 2012-07-22T20:06:20.883 に答える
1

これは、私が使用していたバージョンのPerlに問題があることが判明しました。5.16.1にアップグレードすると、問題が解決しました。

于 2012-08-22T22:51:50.947 に答える