#!/usr/bin/perl use strict; use warnings; use Getopt::Long; # Parameteruebergabe # Uebergabeparameter einlesen GetOptions ('i=s' , \$infile1); print "$infile1\n"; open my $FILE_Complete_List ">C:\\Complete_List.datafield" | die "\n Die Datei Complete_List.datafield konnte nicht erstellt werden ($!)\n"; close $FILE_Complete_List; open ( my $FILE1, '<', $infile1) || die "\n Die Datei $infile1 konnte nicht geoeffnet werden ($!)\n"; my @Datafield_List = <$FILE_Input>; #Inhalt von FILE1 in FILE_Complete_List schreiben, bzw. an das Ende des Files anhängen um es nach doppelten Einträgen durchsuchen zu können close($FILE1); chomp(@Datafield_List); chomp(&FILE_Complete_List); #FILE_Complete_List durchsuchen nach doppelten Einträgen close($FILE_Complete_List); my $i=0; for my $zeile (@Datafield_List) { if($zeile =~ m/\.datafield$/i) { # was du hier machen willst weiß ich nicht // ich wollte mehrere skalare erstellen mit aufsteigenden Nummern versehen, in ein Array reinpacken oder ähnliches, oder in einen string ...???, für das durchsuchen aller gleichzeitig, also brauche ich wohl nicht #my $pfad = ... ; #open(my $in2_fh,'<', $pfad) || die "Datei $pfad konnte nicht geoeffnet werden($!)\n"; # ... $i++; } } for my $zeile (@Datafield_List) { # finde in der Zeile was nach aussieht if($zeile =~ m/<(\w+)\s*(.*?)\s*>/i) # ich suche nach < gefolgt (direkt?) nach irgendeiner Zeichenfolge, die ein Steuerzeichen und Steuerzeichen bestehen, gefolt von belieben Zeichen? Kann ich da eine kleine Erklärung haben? { # gefundener Name des XML-Tags my $name=$1; #aus der 1. Klammer?? # parameter in dem XML-Tag my $params=$2; #aus der 2. Klammer?? bräuchte hierzu eine kleine Erklärung von der oberen Suche # weiter wenn nicht der gesuchte Tag next unless($name eq 'Measurement' or $name eq 'Parameter'); # finde in $params alles was nach key="wert" aussieht: while($params =~ /(\w+)\s*=\s*"([^"]+)"\s*/gc) #kannst du mir dazu etwas erklären { my $key=$1; my $val=$2; # weiter wenn $key nicht "nameAsap2" oder "name" next unless( $key eq 'nameAsap2' or $key eq 'name' ); # wenn Länge des Inhalts größer als 32 Zeichen if(length($val | $ $key) > 32) { my $File = $infile1; print "\n !!! FEHLER !!! \n"; print "In der Datei '$File' besitzt folgender Strukturmember eine groessere Zeichenkette als 32 Zeichen: '$val'\n" print "Der Bezeichnername ist in der folgenden Zeile als $key bezeichnet: '$zeile'\n"; #system("command", 8) und '$1' für den ersten Treffer } } } }