So, habe mir die 2. Perl.zip mal angeschaut....
"eigenwillig" kann ich bestätigen.
Ein parr anmerkungen zu:
1 | MARKE:
|
2 | foreach (<CONFIG>) # zeile für zeile
|
3 | {print "$h\n";
|
4 | if($_ !~ /#/) # ist am anfang keine # mache ....
|
5 | {
|
6 | if($_ =~ /LOGICAL/) # suche $help in der config
|
7 | {
|
8 | print "in der schleife\n";
|
9 | $zwerg = $h; # speichere die i nummer des Feldes in zwerg
|
10 | print "zwerg = $zwerg\n";
|
11 | print "h= $h\n";
|
12 | last MARKE;
|
$_ ist eine tolle Sache, macht den Code aber auch schwer lesbar.
das mit dem ^ im regex solltest du beachten
LOGICAL soll wohl $help heissen.
Ich habe dann Das Suchwort ist $help\n"; mal in ...ist \"$help\"...
geändert und den chomp($help) reaktiviert. Die Ausgabe war:
1 | "as Suchwort ist "ISOGEN_SKEY
|
Und jetzt ganz genau hinschauen! das 2. " in am ANFANG der Zeile!
Jetzt lass mich raten: Die stahlrohr_m.ptb ist unter Windof erstellt
worden, richtig?
Der Windows-Zeilenumbruch besteht aus 2 Zeichen: \r und \n
Der unter Unix nur aus \n und chomp entfernt auch NUR \n....
Ergo ist der Inhalt von $help in warheit ISOGEN_SKEY\r
Und das findet Perl zurecht nicht.
Bau nach dem chomp mal ein
ein. Oder davor
Das entfernt den \r nachhaltig.
Habe ich auch schon mal sehr lange nach sowas gesucht...
BTW: Perl kennt auch Arrays mit Strings als Index. Die nennt man dann
Hash und sehen so aus:
$hash{"ISOGEN_SKEY"} = "j" oder z.b. if ($hash{$help} eq 'j'){ ....
Das dürfte um Längen schneller sein als xmal die config.txt zu laden
und das Programm wird auch wesentlich kürzer.
Geht natürlich auch mehrdimensional gemischt:
$lala{"hallo"}[45]{$test}{'noch einer'}[4]
Ein Zugriff auf den Gesammten Array
$lala{"hallo"}[45]{$test}{'noch_einer'}
z.b. für eine foreach ist dann via
@{$lala{"hallo"}[45]{$test}{'noch_einer'}} möglich :-)