[Vienna-pm] seek ans stream ende?
Peter J. Holzer
hjp-vienna-pm-list at hjp.at
Mon Jan 7 06:58:01 PST 2008
On 2008-01-07 15:45:56 +0100, Baier Oliver wrote:
> ein ganz simples
>
> open LOG, "$gunzip -c $log |" or warn "($!)\n";
^
Das ist eine Pipe.
> seek LOG,-30,2;
Seek auf Pipes funktioniert nicht. Ebensowenig auf Sockets, Terminals
oder andere Pseudofiles mit rein sequentiellem Zugriff. Wie sollte das
Positionieren an eine andere Stelle da vor sich gehen?
> chomp (my $row = <LOG>);
> print "$row ($.)\n";
> close LOG;
>
> klappt nicht, da er scheinbar erst weiter einliest, wenn man sich den
> Inhalt holt.
Nein, es klappt deswegen nicht, weil seek auf Pipes nicht geht. Wenn Du
den Return-Code abgefragt hättest:
seek LOG, -30, 2 or die "seek: $!\n";
hättest Du wenigstens die Meldung "Illegal seek" bekommen.
> Aber es muss doch eine einfach Möglichkeit geben, an die letzten Zeichen
> eines Streams ranzukommen, oder?
Ja, bis zum Ende lesen und die letzten $n Zeichen merken. Wobei
natürlich die Frage offenbleibt, wann das Ende erreicht ist: Wenn das
letzte bisher geschriebene Zeichen erreicht ist? Wenn der letzte
Schreiber die Pipe geschlossen hat?
hp
--
_ | Peter J. Holzer | It took a genius to create [TeX],
|_|_) | Sysadmin WSR | and it takes a genius to maintain it.
| | | hjp at hjp.at | That's not engineering, that's art.
__/ | http://www.hjp.at/ | -- David Kastrup in comp.text.tex
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
Url : http://mail.pm.org/pipermail/vienna-pm/attachments/20080107/8fb6bdad/attachment.bin
More information about the Vienna-pm
mailing list