Thread primary key Duplikate entfernen ... suche Programmieridee
(18 answers)
Opened by tejste at 2014-07-23 12:46
Hallo tejste,
gerade bei diesem Codebeispiel habe ich mich doch eigentlich um Leserlichkeit bemüht. :-/ Wenn etwas unleserlich ist, liegt es übrigens mehr am Programmierer als an Perl, so gesehen ist Perl wie Beton: Es kommt darauf an, was man daraus macht. Über die Zeile, nach der Du fragst, wurde ja schon diskutiert (s.o.). So SQL zu produzieren (es müssten auch die Quotes noch gesetzt und/oder Werte gecastet werden, wenn z.B. '07/18/2014' in der Ziel-DB als Datumsfeld modelliert ist usw.) und auf die Datenbank loszulassen, ist sicher nicht der richtige Weg. Ansonsten wird in der Zeile im Wesentlichen ein String zusammengebaut. Mit join(', ', @f) werden die Elemente des Arrays @f mit Komma und Leerzeichen getrennt zu einem String zusammengefügt, siehe perlfunc join. join(';', @f) würde Dir dementsprechend Deine Daten wieder in dem Format zurückliefern, wie sie vorher beim Einlesen waren; vielleicht ist es das, was Du willst, siehe auch Raubtiers Beitrag dazu. Das Konstrukt mit __DATA__ gebraucht man vorwiegend für Code-Beispiele, damit man nicht mit zwei Dateien hantieren muss. In der Wirklichkeit liest man normalerweise aus Dateien (oder irgendwelchen anderen Datenquellen, aber bleiben wir bei Dateien), siehe hierzu open. Wenn das Ergebnis auch wieder in eine Datei geschrieben werden soll, dann eben nochmals open. Beispiel: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 # Datei zum Lesen (<) öffnen open my $inFH, "<", "quelldatei.txt"; # Andere Datei (die es vielleicht noch nicht gibt) zum Schreiben (>) öffnen open my $outFH, ">", "zieldatei.txt"; # Die erste Zeile der Quelldatei auslesen (später natürlich nicht nur die erste) my $firstrow = <$inFH>; # Diese Zeile in die Zieldatei schreiben. print $outFH $firstrow; # Beide Filehandles wieder schließen close $inFH; close $outFH; HTH Grüße payx |