#!/usr/bin/perl use strict; use warnings; my $indir='./in/'; my $outdir='./out/'; my $eingabe_endung = ".txt"; my $ausgabe_excel = ".xls"; #my $ausgabe_ceda = ".csv"; my @parameter = ('Raw', 'Normal'); #Verzeichnis einlesen my @dateien=read_dir($indir,$eingabe_endung); #Hauptprogramm for my $dateiname (@dateien) { my $counter = 1; my $ausgabe; open(my $ifh, '<' ,$indir.$dateiname) or die("ERROR open $indir$dateiname ($!)\n"); my $name=split_name($dateiname); open(my $ofh, '>', $outdir.$name.$ausgabe_excel) or die("ERROR open $outdir$name$ausgabe_excel ($!)\n"); my @spalten; while (my $line=<$ifh>) { chomp($line); my @elements=split(/\t/,$line); print $counter,"\n"; if ($counter == 1) { for my $datensatz (@elements) { my $ok=vergleich($datensatz,\@parameter); push(@spalten,$ok); } } else { my @list=elemente_uebernehmen(\@elements,\@spalten); print $ofh join("\t",@list)."\n"; } } $counter++; close($ifh) or die("ERROR close $indir$dateiname ($!)\n"); close($ofh) or die("ERROR close $outdir$name$ausgabe_excel ($!)\n"); } #Nebenprogramme #Funktionen ########################################################################### # Verzeichnis lesen # und die erlaubten Dateien zurück geben sub read_dir { my $dir=shift; my $filter=shift; my @list; opendir(my $in, $indir) or die("ERROR open $indir ($!)\n"); while(my $file=readdir($in)) { next if($file=~/^\.\.?/) next if(!-f $indir.$file); next if($file!~/\Q$filter\E$/); push(@list,$file); } closedir($in); return @list; } # Endung von einem Dateinamen entfernen sub split_name { my $name=shift; $name=~s/\..+?$//; return $name; } #Maske erstellen sub vergleich { my $vergleich = shift; my $params=shift; my $ok=0; for my $parameter (@$params) { if ($parameter eq $vergleich) { $ok = 1; last; } } return $ok; } sub elemente_uebernehmen { my $list=shift; my $spalten=shift; my @return_list; for my $pos (1..$#$spalten) { push(@return_list,$list->[$pos]) if($spalten->[$pos]); } return @return_list; }