use strict; use warnings; use POSIX qw/ strftime /; # Deklarationsteil allgemein my $datum = strftime("%d.%m.%Y", localtime); my $tag = strftime("%d", localtime); # Gekürzt um nur 18 anzuzeigen my $monat = strftime("%m", localtime); # Gekürzt um nur Monat anzuzeigen my $jahr = strftime("%Y", localtime); # Gekürzt um nur Jahr anzuzeigen my $line; # Main Programm &progmax; # Subroutine progmax sub progmax{ my $file = "C:\\test\\08.03.2019_uebersicht.txt"; # Quelldatei des Tageslogs my $file2 = "C:\\test\\03.2019.csv"; # Name der Zieldatei my $anzzeilen = 0; # Zeilen in der Quelldatei zählen auf 0 setzten my ($index); my (@index); my (@daten); my %verfugbar = (); my %max = (); open (QUELLEneu, $file) || die " FEHLER: Datei $file nicht gefunden !!"; # Quelldatei öffnen, wenn nicht vorhanden abbrechen while () { $line = $_; # Quelldatei zeilenweise abarbeiten if ($line =~ /(\d{1,2}:\d{2})/){ # Ist die Zeile eine Uhrzeit?? next} # Dann einfach weiter und die Uhrzeit nicht beachten elsif (chomp($line)){ # Quellzeile glätten $anzzeilen++; # Zeilen in der Quelldatei zählen @daten = split(/ ; /,$line); # Eingelesene Zeile splitten (ist durch ; getrennt) $index = $daten[0]; @index = $daten[0]; $verfugbar{$index} = $daten[1]; if ($max{$index} <= $daten[2]) { $max{$index} = $daten[2]; } } } open (ZIEL, ">$file2"); print ZIEL ";$datum\n"; print ZIEL sort {"\U$a" cmp "\U$b"} map { "$_ ; $max{$_};\n" } keys %max; close (QUELLEneu); close (ZIEL); }