2012-07-22 4 views
1

eval에서 시도 할 때 나는 성가신 문제를 겪고 있습니다.잉어 : ARRAY의 기괴한 복사본을 sassign에 넣습니다. 모든 수정 사항?

코드는 다음과 같습니다. $self->$func 점과 같은 오류에 특정 페이지로 분리 핸들러이 경우

$status = eval { $self->$func(@{$y->{args}}); }; 

:

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이 죽으면, 나는 주위에 버그가 스택에 관한 펄에 깊이가 몇 가지 제안이

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

이 찾고 die의 내부 어딘가에 가정 (예 : http://code.activestate.com/lists/perl5-porters/149248/) 그러나이 시점에서 필자는 필자가 perl에 대한 지식이 부족한만큼 두려운 것이고, 이것이 관련성이 있는지 또는 그것이 사실이라면 어떻게해야할지 모르겠습니다. :(

이 문제를 해결할 방법이 있는지 또는 eval에서 오류 문자열을 다시 전달할 수있는 방법이 있는지 또는 내가 잘못 읽었습니까?

+0

실례를 제공 할 수 있습니까? – perreal

+0

나는 코드를 예제에 넣으려고했지만 괜찮 았기 때문에 제가 언급 한 기사와 관련이 있다고 생각하게됩니다. 당시 저는 Carp의 구버전을 가지고 있을지도 모른다고 생각 했었습니다. 그러나 그것은 최신 버전입니다. 실패한 모범을 얻고 성공한다면 게시 할 것입니다. – mark

+0

[현재 안정 버전] (http://www.perl.org/get.html)에서 문제를 재현 해보십시오. 성공하면 [버그 신고] (http://p3rl.org/bug). 5.10이 오래되었고 [지원되지 않음] (http://perldoc.perl.org/perlpolicy.html#MAINTENANCE-AND-SUPPORT),이 버그는 이미 해결되었습니다. – daxim

답변

1

이것은 사용하고있는 Perl 버전에서 문제가되는 것으로 나타났습니다. 5.16.1로 업그레이드하면 문제가 해결되었습니다.

+0

사실, 업그레이드만으로 잉어 버그가 더 이상 발생하지 않습니다. 5.16.1 이상으로 업그레이드해도 문제가 해결되지 않을 수도 있습니다 (cf. http://stackoverflow.com/a/11603591/1905491의 다른 답변 참조). – stefanct

1

이 소리는 #52610과 같습니다. 범인이 될 수있는 디버거에 연결하는 모듈을 사용하고 있습니까?

+0

아니요, 필자는 최신 perl로 업데이트하고 다시보고하겠습니다. – mark

+1

잉어는 DB 패키지에 연결됩니다. 해결 방법 패치 [here] (http://www.perlmonks.org/index.pl?node_id=969714) (또한 링크에 묻혀있는 곳). – runrig