Thread Datenzeilen einlesen
(6 answers)
Opened by qwe123qwe at 2013-10-08 23:10
im Prinzip hab ich das hinbekommen, d.h. ich erhalte die Datei(en), die ich brauche.
Bei der Codekosmetik hab ich aber noch ein Problem : ich wollte das Ganze in eine Schleife packen, um mehrere solcher Dateien auf einmal zusammenfassen zu können. Als Beispiel benutze ich folgende zusammengesetzte Datei: Quote Umgesetzt hab ich das mit einer Liste aus Hashes. Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 #!/usr/bin/perl -w use strict; my @werte = ( { 'Muster' => '(\d+):(\d+):(\d+)\s+(\d+)\.(\d+),(\d+)', 'Amizahl' => '$values[3].$values[4].".".$values[5]' }, { 'Muster' => '(\d+):(\d+):(\d+)\s+(\d+),(\d+)', 'Amizahl' => '$values[3].".".$values[4]' } ); my @sekunden; my @kurse; foreach my $w(0..$#werte) { open (OUTDATEI,">>/home/tester/tmpfs/outdatei") || die "kann Ausgabedatei nicht öffnen: $!"; @sekunden = (); @kurse = (); open (UNBEREINIGT,"</home/tester/tmpfs/test1.unb") || die "kann unbereinigte Datei nicht öffnen: $!"; while (my $line = <UNBEREINIGT>) { my @values = $line =~/$werte[$w]{'Muster'}/; next unless @values; print OUTDATEI $line; my $sec = $values[2]; $sec += $values[1]*60; $sec += $values[0]*3600; my $amizahl = $werte[$w]{'Amizahl'}; print ("$amizahl\n"); if ($values[0] < 22 && $values[0] > 07) { push (@sekunden, "$sec"); push (@kurse, "$amizahl"); } } close (UNBEREINIGT); close (OUTDATEI); } Ziel ist es, die Kommazahlen in amerikanischem Format zu bekommen. Mit diesem Code bekomme ich durch den Printbefehl die Ausgabe Quote Mir fehlt also noch der Schritt, in dem nach der Expandierung des Hash die für die values vorgenommen wird. Wie kann ich das denn hinbeommen ? |