Theoretischerweise muss man die Datei doch nicht rückwärts auslesen... Man müsste nur einen Weg erschaffen, relativ zur Zeilenzahl, einfach die letzten Zeilen der Textdatei auszulesen?!?
User since
2003-08-04
14371
Artikel
ModeratorIn
Du kannst das Modul auch installieren wenn Du keinen eigenen Server hast. Mehr steht
hier...
Du kannst es auch mit
Tie::File machen (wie Relais es ja schon gesagt hat)...
User since
2006-11-29
340
Artikel
BenutzerIn
Oder du machst es genauso wie File::ReadBackwards das macht.
Das Modul ist sehr gut dokumentiert, es sollte nicht so schwer sein die Datei mit sysopen, sysseek, usw. und mit der Doku von File::ReadBackwards selbst von hinten zu lesen.
Mit Doku meine ich die Kommentare im Quelltext.
MfG PerlProfi
Tie::File sieht noch komplizierter aus ?(
User since
2003-11-28
3645
Artikel
ModeratorIn
Kompliziert? Du bekommst mit Tie::File ein Array geliefert. Die letzten n Elemente eines Arrays sind doch sehr leicht herauszuholen.
Aber bei sehr großen Dateien würde ich zu File::ReadBackwards raten.
User since
2003-11-28
3645
Artikel
ModeratorIn
[quote=Guest,04.12.2006, 18:59]Theoretischerweise muss man die Datei doch nicht rückwärts auslesen... Man müsste nur einen Weg erschaffen, relativ zur Zeilenzahl, einfach die letzten Zeilen der Textdatei auszulesen?!?[/quote]
Nein. Es gibt bei (Unix-)Dateien kein Konzept einer "Zeilennummer". Man muss tatsächlich mitzählen, es sei denn, alle Zeilen haben genau die selbe Länge. Und rückwärts zu zählen ist dabei wesentlich effizienter, wenn man eh nur die n letzten Zeilen haben möchte.
Und da gibts dann wirklich nur File::ReadBackwards ???
User since
2003-11-28
3645
Artikel
ModeratorIn
Du kannst es auch zu Fuss machen: Dateilänge feststellen, die letzten n Bytes per read einlesen, feststellen, wieviele Newlines enthalten sind. Wenn es weniger als 10 sind, die vorletzten n Bytes einlesen usw. etc. pp. Aber warum den Aufwand machen, wenn es ein fertiges Modul gibt?
Weil ich nicht ganz durchsteige, wie ich das Modul ohne Shell-Zugang ans laufen bekomme (habs mit eurem Wiki versucht, jedoch bisher ohne Erfolg)