use warnings; use Getopt::Long; # Parameteruebergabe #use strict; my $infile1; # Uebergabeparameter einlesen GetOptions ('i=s' , \$infile1); print "ueberarbeitetesperlskript.pl, Version 1.0"; my @Datafield_List; my @Suchergebnisse; # Datafield Datei einlesen open (FILE1, "<$infile1") || die "\n Die Datei '$infile1' konnte nicht geoeffnet werden\n"; @files = split(//, &infile1); while (@files = readdir(FILE1)){ print " @files "; for($i=0; $i < (@files); $i++){ $pfad = $files[$i]; opendir (File, $pfad) || die "\n Die Datei $infile1 konnte nicht geoeffnet werden ($!)\n"; my @tmp; @tmp = File; push (@Datafield_List,"\n"); push (@Datafield_List,@tmp); close File; } } my $line_nr=0; while(my $zeile=@Datafield_List) { 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; } } } } print " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ROGER !!!!!!!!!!!!!!!!!!!!!!! "; }