Quote
9:40
Word ; 7 ; 2
Excel ; 5 ; 2
Notepad ; 5 ; 1
Corel ; 5 ; 2
9:50
Word ; 7 ; 2
Excel ; 5 ; 2
Notepad ; 5 ; 1
Corel ; 5 ; 5
QuoteA B
1 08.03.2019
2 Word 2
3 Excel 2
4 Notepad 1
5 Corel 5
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 42 43 44 45 46 47
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 (<QUELLEneu>) { $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); }
QuoteA B C
1 08.03.2019 09.03.2019
2 Word 2 1
3 Excel 2 3
4 Notepad 1 2
5 Corel 5 4