#!/usr/bin/perl use strict; use warnings; my $workdir='*****'; my $workfile='*****'; my $outfile='C:\Temp\archiv4\Daten.txt'; ##-------------Verzeichnisse holen my @dir; { opendir(my $dh , $workdir) or die "Cant open DIR: $workdir ($!)\n"; my @dir=grep{!/^\.\.?$/}readdir($dh); close $dh; } my $text=''; print "Open Dirs \n"; print "-------\n"; for my $dir (@dir) { print $dir."\n"; # ist das so geplant ??? my $path=join('\\',$workdir,$dir,$workfile); ##------------Datei öffnen print "Report: parsing $path\n"; my %outputTable = parseData($path); ##------------Test if (exists $outputTable{"4"}) { $outputTable{"3"}=$outputTable{"3"}+$outputTable{"4"}; delete $outputTable{"4"}; } ##------------Ausgabe in String while ( my ($Name,$Wert) = each( %outputTable) ) { print "Tag: $Name, $Wert\n"; $text .= "$Wert\t"; } $text .= $dir."\n"; print "--------------------------\n"; } #Daten schreiben open (my $fh, ">" $outfile) or Win32::MsgBox("Die Ausgabedatei $outfile konnte nicht erzeugt werden: $!\n"); print $fh $text; close $fh; sub parseData { my $path=shift(@_); my %Table; open(my $fh, '<', $path) or die "can't open $path ($!)\n"; my @fullTable=<$fh>; close($fh); ##finde Positionen von **** and **** durch erste Zeile # füllen von %Table aus @fullTable ??? # zeige mal genauer was hier passiert. # möglicherweise lässt sich das effizienter gestalten. return %Table; }