use warnings; use Getopt::Long; # Parameteruebergabe use strict; use File::Temp qw(tempfile tempdir); use File::Glob; my $infile1; # Uebergabeparameter einlesen GetOptions ('i=s' , \$infile1); print "ueberarbeitetesperlskript.pl, Version 1.0"; my @Datafield_File_List; my @Datafield_List; my @Suchergebnisse; my @Datafield_List_tmp; my $Datafield_List_tmp; my $anzahl, my $filename; # Datafield Datei einlesen open (FILE1, "<$infile1") || die "\n Die Datei '$infile1' konnte nicht geoeffnet werden\n"; my @files; my $line; while (){ #@files = split(/\s+/, ); @files = glob ("*.datafield"); #$anzahl=@Datafield_File_List; #foreach $line(@files){ foreach($filename (@files)){ #$Datafield_List_tmp = shift(@files); print "Hier!!!!!!!!!!!!!!!!!!!!!!!! '$filename'"; opendir (File, $filename) || die "\n Die Datei $infile1 konnte nicht geoeffnet werden ($!)\n"; @Datafield_File_List=readdir(File); chomp(@Datafield_File_List); push (@Datafield_List,@Datafield_File_List); chomp(@Datafield_List); print"@Datafield_List"; } } while(@Datafield_List) { my $line_nr=0; my $zeile; chomp($zeile); $line_nr++; # if($zeile =~ m/<(\w+)\s+(.*?)\s*>/i) { my $name=$1; my $params=$2; next unless($name eq 'Measurement' or $name eq 'Parameter'); # key="wert" my $aktZeile; while($params =~ /(\w+)\s*=\s*"([^"]+)"\s*/gc) { my $key=$1; my $val=$2; # weiter wenn $key nicht "nameAsap2" oder "name" next unless( $key eq 'nameAsap2' or $key eq 'name' ); find_double(@Datafield_List); # wenn Länge des Inhalts größer als 32 Zeichen if(length($key) > 32) { my $File = $infile1; #Problem, da die gesamte Liste eingelesen wird. Beim Einlesen vllt etwas noch in das Array schreiben, also zwischen den beiden push-Operationen noch ein push Opberator "bla den Dateinamen" print "\n !!! FEHLER !!! \n"; print "In der Datei '$File' Zeile $line_nr besitzt folgender Strukturmember eine groessere Zeichenkette als 32 Zeichen: '$key'\n" #print "Der Bezeichnername lautet '$val'\n"; } my $value; # Wert in $val noch unbekannt ist? while (@Suchergebnisse){ if($_ =~ m/$val/i){ print "\n !!! FEHLER !!! \n"; print "\nDer '$key': '$val' ist doppelt vergeben. \n"; } else { # den Wert in $val oder $key zur Liste der Suchergebnisse hinzufügen $Suchergebnisse[++$#Suchergebnisse] = $val; } } } } close FILE1; }