[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