2013-10-08T21:10:48 qwe123qwe2. gibt's in Perl eventuell einen Trick, das ZEITFORMAT am Zeilenanfang anstelle regex als Kriterium zu nutzen ?
1 2
my @values = $line =~/(\d+):(\d+):(\d+)\s+(\d+),(\d+)\s+([\d.]+)\s+([\d.]+)/; next unless @values;
2013-10-09T02:01:29 topegTie::File macht aus meiner sich nur Sinn wenn man in der Datei "herum springt" ließt man sie nur einmal ein um daraus Daten zu extrahieren produziert das Modul einiges an unnötigem Overhead.
Quotedas ist alles Text
17:16:05 8.339,75
17:15:10 2.100,76
* 1
* 2
das ist alles Text
17:56:05 139,75
17:55:10 139,76
* 1
* 2
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); }
Quote$values[3].$values[4].".".$values[5]
$values[3].$values[4].".".$values[5]
$values[3].".".$values[4]
$values[3].".".$values[4]
1 2 3 4 5 6 7 8 9 10 11
my @werte = ( { 'Muster' => '(\d+):(\d+):(\d+)\s+(\d+)\.(\d+),(\d+)', 'Amizahl' => sub { my @values = @_; $values[3].$values[4].".".$values[5] }, }, { 'Muster' => '(\d+):(\d+):(\d+)\s+(\d+),(\d+)', 'Amizahl' => sub { my @values = @_; $values[3].".".$values[4] }, } ); ... # schleife my $amizahl = $werte[$w]->{Amizahl}->(@values);