Am Mon, 2003-06-23 um 03.00 schrieb David Haller:
Hello,
On Mon, 23 Jun 2003, Jan Trippler wrote:
# Datei lesen die "usage: $0 Dateiname\n" unless defined $ARGV[0]; open DATEI, "$ARGV[0]" or die "Fehler beim Oeffnen der Datei ($!)\n";
Die Datei sollte man IMO explizit "readonly" oeffnen...
my @zeilen = <DATEI>; close DATEI;
*AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA*
Das ist der gleiche Fehler wie von grepmail. Versuch das mal mit ner Datei von ein paar 100 MB!!! 100MB Dateien sind ein extremer Sonderfall.
Ja, bei derartigen Extremfällen scheitert Einlesen in eine einzelne Liste, aber ...
Stehen lassen kann man das "open".
# meine Variablen my %daten = (); # der Hash fuer die Werte und Keys eines Datensatzes my @spalten = ("Kdnr", "Name", "Firma", "Beschreibung", "Telefon", "Zusatz");
# Tabellenheader print "<table width='100%' border='1'>\n"; print "<tr>\n"; foreach (@spalten) { printf "<th>%s</th>\n", $_; } print "</tr>\n";
foreach (@zeilen) { # Zeilen abklappern, Zeile wird in $_ abgelegt
*ARGH* Hier wird's dann wirklich doof, wenn man sowieso zeilenweise liest, kann man gleich die Datei hernehmen.
... Jan's Lösung ist schon bei Dateien mit wenigen 100 Zeilen um mehrere 10-Potenzen schneller. D.h. je nach Anwendungsgebiet ist mal die eine oder die andere Lösung sinnvoller, schneller oder "besser". Ralf