wie kann ich die Anzahl der Zeilen einer Datei ermitteln, ohne mittels system auch "wc -l" zurückzugreifen? Ich möchte die Datei auch nicht öffnen, um in einer Schleife pro Zeile eine Variable incrementieren, ...
moritz
2008-09-23 18:12
User since 2007-05-11
923
Artikel HausmeisterIn
Schau mal in perlfaq5, da wird genau diese Frage beantwortet.
danke, aber ich suche ja gerade eine Lösung ohne increment in der Schleife.
Hintergrund: ich möchte Dateien einlesen, die 1-n Zeilen einhalten können. Ab einer noch nicht genau definierten Grenze möchte ich eine Rückfrage einbauen, ob das wirklich gewollt ist. Wenn ich die Datei daher vorheri einmal komplett einlese, um anschließend zu fragen "Bist du sicher", halte ich das für eine nicht wirklich gelungene Lösung.
#Kein Kommentar
2008-09-23 18:42
User since 2007-06-09
575
Artikel HausmeisterIn
du könntest mit -s die dateigröße in bytes abfragen, wenn die anzahl von bytes zu groß ist, könntest du die frage an den benutzer stellen.
oder brauchst du unbedingt die zeilennummern?
Gerade weil wir alle in einem Boot sitzen, sollten wir froh sein, dass nicht alle auf unserer Seite sind
Gast Gast
2008-09-23 18:49
Hi,
es sollte auch mit der Dateigröße funktionieren, aber interessieren würde es mich halt doch ob es da nicht noch was gibt. Das ich auf Unix/Linux "wc -l" nutzen kann, ist mir ja auch klar, aber gibt's denn keinen reinen Perl Weg?
Struppi
2008-09-23 18:51
User since 2006-02-17
628
Artikel BenutzerIn
Ohne die Datei zu öffnen wird's schwierig, aber einlesen musst du sie nicht:
Naja, newlines zählen kann man nur mit Lesen der Datei. Das ist keine Meta-Information, die irgendwo im Dateisystem gespeichert wird. Auch "wc -l" leist die Datei und zählt Leerzeichen.
Hast du die Version mit sysread mal ausprobiert? Ist dich wirklich deutlich langsamer als wc -l?