Thread Filelist: Dateien öffnen (39 answers)
Opened by INIING at 2012-07-05 14:14

INIING
 2012-07-17 11:00
#159912 #159912
User since
2012-06-28
21 Artikel
BenutzerIn
[default_avatar]
Also ich verstehe nicht, was jetzt neu ist. Aber ich kann gerne nochmal schreiben, was das Skript machen soll:
Es bekommt eine Fileliste übergeben, welche die Endungen .datafield hat und alle files stehen in einer zeile und sind durch ein leerzeichen getrennt. diese files überprüfe ich alle. es sind xml-files. in den tags, die mit mearurement oder parameter beginnen, darf der name bzw. nameasap2 nicht größer 32 zeichen sein. zudem darf in keinem file der name bzw. asap2name doppelt stehen. bei enstprechenden fehlern, sind fehlermeldungen auszugeben.
das ist das erste skript, was ich schreibe.

Diese Fehlermeldung kommt, was ist falsch?:

Quote
ccperl C:\User\views\snapshot_views\V_JL03\scwcc_tools\intern\skripte\ueberarbeitetesperlskript.pl -i C:\User\views\snapshot_views\V_JL03/scwcc_ed_tc/Module/Global/Pub/Global_types.datafield C:\User\views\snapshot_views\V_JL03/scwcc_ed_tc/Module/MCU/CCU/CCC/src/CCC_DQC_Param.datafield C:\User\views\snapshot_views\V_JL03/scwcc_ed_tc/Module/MCU/CCU/CCC/src/CCC_DQC_Measure.datafield
syntax error at C:\User\views\snapshot_views\V_JL03\scwcc_tools\intern\skripte\ueberarbeitetesperlskript.pl line 32, near "$filename ("
syntax error at C:\User\views\snapshot_views\V_JL03\scwcc_tools\intern\skripte\ueberarbeitetesperlskript.pl line 36, near ");"
syntax error at C:\User\views\snapshot_views\V_JL03\scwcc_tools\intern\skripte\ueberarbeitetesperlskript.pl line 106, at EOF
Execution of C:\User\views\snapshot_views\V_JL03\scwcc_tools\intern\skripte\ueberarbeitetesperlskript.pl aborted due to compilation errors.

omake: Shell line exit status 255. Stop.
2012-07-17 10:37:08,88

C:\User\views\snapshot_views\V_JL03\scwcc_ed_tc\Image>





Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
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 (<FILE1>){
        #@files = split(/\s+/, <FILE1>);
        @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++;

  # <name...parameter...> 
  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;
}

Last edited: 2012-07-17 11:03:41 +0200 (CEST)

View full thread Filelist: Dateien öffnen