Hallo Com.
Ich hab mal wieder ein kleines Problem, das ich mit diverser Fachliteratur ohne Anhaltspunkt nicht loesen kann.
Vielleicht koennt ihr mir helfen?!
Eine Subroutine in meinem Script sieht wie folgt aus:
79 sub se_output {
80
81 #AUsgabe aller PODs einer SE
82
83 my $msc="$_[0]";
84 open(PODTREE, "/XXX/report/seclist_podtree")
85 or die "ERROR: seclist_podtree nicht gefunden. DO: seclist -update";
86 my @podtree=<PODTREE>;
87 close(PODTREE);
88 my @setree=grep /$msc/,@podtree;
89 my $zaehler=1;
90 foreach my $i (@setree) {
91 my @{"splitted$zaehler"} = split(/:/,$i);
92 $zaehler++;
93 }
94 for (my $s=1;$s <= $zaehler;$s++)
95 {
96 print "\n Datenfiles ($msc): /YYY/${"splitted$s\[2\]"}\n";
97 for (my $zz=1;$zz<=$termsz;$zz++) {
98 print "*";
99 }
100 qx(rsh priv$msc -l f223 "/XXX/scripts/seclist_ext ${"splitted$s\[2\]"} $msc");
101 open(DPOUT,"/XXXreport/seclist_$msc\_${"splitted$s\[2\]"}\_tmp");
102 while(defined(my $i = <DPOUT>)) {
103 print $i;
104 }
105 close(DPOUT);
106 unlink("/XXX/report/seclist_$msc\_${"splitted$s\[2\]"}\_tmp");
107 for (my $zz=1;$zz<=$termsz;$zz++) {
108 print "*";
109 }
110 }
111 }
112
113
114
115 sub create_sfrtree {
116
117 #Quelltext zur Erstellung eines
Fuer die Routine ist noch kein Aufrufszenario im Hauptteil des Skripts programmiert. Es existiert bisther nur die Methodendefinition.
Wenn ich das Skript jetzt aufrufe schaut sich ja der Compiler den ganzen Quelltext an und findet in dieser Routine diverse Fehler:
<HOSTNAME>:-::/XXX/scripts > seclist
Bareword found where operator expected at seclist line 114, near ""/XXX/report/seclist_$msc\_${"splitted"
(Missing operator before splitted?)
Backslash found where operator expected at seclist line 114, near "$s\"
(Missing operator before \?)
Backslash found where operator expected at seclist line 114, near "2\"
(Missing operator before \?)
String found where operator expected at seclist line 114, near "]"}\_tmp""
(Missing operator before "}\_tmp"?)
Bareword found where operator expected at seclist line 105, near ""/XXX/report/seclist_$msc\_${"splitted"
(Missing operator before splitted?)
Backslash found where operator expected at seclist line 105, near "$s\"
(Missing operator before \?)
Backslash found where operator expected at seclist line 105, near "2\"
(Missing operator before \?)
String found where operator expected at seclist line 105, near "]"}\_tmp""
(Missing operator before "}\_tmp"?)
Global symbol "$termsz" requires explicit package name at seclist line 97.
Global symbol "$termsz" requires explicit package name at seclist line 115.
syntax error at seclist line 114, near ""/XXX/report/seclist_$msc\_${"splitted"
syntax error at seclist line 105, near ""/XXX/report/seclist_$msc\_${"splitted"
Execution of seclist aborted due to compilation errors.
Der Fehler mit $termsz ist mir klar, da fehlt die Variablendefinition. Also:
my $termsz=qx(/usr/bin/tput cols);
Aber was mache ich bei Definition/Aufruf der Arrays mit einer fortlaufenden Variable im Namen falsch?
Und: Fehler in Zeile 114. Die Zeile ist leer?!?!
Danke im Vorraus && Gruss
starbuck