Thread logfile option in File::Unpack führt zu Fehler
(3 answers)
Opened by lawnmover at 2011-09-11 20:23
Der Code in File::Unpack ist nicht ganz korrekt.
Der Fehler kommt hier: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 sub log { my ($self, $text) = @_; if (my $fp = $self->{lfp}) { my $r = $fp->syswrite($text); die "$r=log($self->{logfile}): write failed: $text\n" if $r != length($text); $self->{lfp_printed}++; } } syswrite umgeht den Perl-IO-Layer und schreibt direkt auf das Systemhandle. Bei open($self->{lfp}, '>', \$scalar) existiert aber kein Systemhandle in das geschrieben werden könnte. Es spielt sich alles im IO-Layer ab. besser wäre also: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 sub log { my ($self, $text) = @_; if (my $fp = $self->{lfp}) { die "log($self->{logfile}): print failed: $text\n" if(!$fp->print($text)); $self->{lfp_printed}++; } } Einen Bugreport habe ich gerade abgesendet. https://rt.cpan.org/Public/Bug/Display.html?id=708... Als temporale Abhilfe, bis das Problem gelöst ist überschreibe die Methode File::Unpack::log in deinem Code: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 sub File::Unpack::log { my ($self, $text) = @_; if (my $fp = $self->{lfp}) { die "log($self->{logfile}): print failed: $text\n" if(!$fp->print($text)); $self->{lfp_printed}++; } } |