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