User since
2006-04-10
66
Artikel
BenutzerIn
Hallo nochmal!
Also zum Teil habe ich das nun zum Laufen gebracht. Dabei ist aber das Problem aufgetreten, dass mir local $/ = "\n\n"; ein Unterprogramm, welches in der while-Schleife aufgerufen wird, platt macht.
In dem Unterprogramm werden in einer while-Schleife weitere Daten analysiert, aber leider nicht mehr wie früher (also bevor ich das mit local $/ eingebaut habe), sondern es bricht diese Schleife einfach ab, wenn zwei Leerzeilen im Text der zu bearbeitenden Datei stehen!
Wie kann ich das $/ in dem Unterprogramm wieder auf default setzen, sodass die while-Schleife wieder "normal" durchläuft???
User since
2006-04-10
66
Artikel
BenutzerIn
Grrr.
Ja, gerade habe ich das auch herausgefunden. Hatte vorher versucht local $/ = ""; und so ein Blödsinn!
Hatte in der perlvar nichts direktes dazu gefunden!
DANKE!!!!!!!!
P.S. Muss ich am Ende der while-Schleife im Unterprogramm eigentlich wieder local $/ = "\n\n"; setzen, oder behält er das in der aufrufenden Schleife???\n\n
<!--EDIT|EagleFox|1149080373-->
User since
2005-01-17
14563
Artikel
Admin1
Das in der sub mit local gesetzte $/ gilt nur in der sub.\n\n
<!--EDIT|GwenDragon|1149082114-->
User since
2003-08-21
2613
Artikel
ModeratorIn
Du kannst die Schleife auch so schreiben:
my ($entry, $entry2);
while(do {local $/="\n\n";defined($entry = <$fh_1>) and defined($entry_2 = <$fh_2>})){
tu_was($entry,$entry_2);
}
So musst Du nicht fuer die ganze Schleife das $/ umgestellt lassen. Wenn man solche globalen Variablen veraendert, sollte man es immer moeglichst schnell wieder zuruecksetzen.
User since
2006-04-10
66
Artikel
BenutzerIn
SUUUPER! Danke betterworld, so klappt das nun alles sehr gut!
Ich hatte zwar noch ein paar kleinere Bugs im script, aber die "$/-Aktion" hat mich echt weitergebracht!
Ich danke euch nochmals!
User since
2003-08-04
12208
Artikel
Admin1
[quote=GwenDragon,31.05.2006, 15:13]Das in der sub mit local gesetzte $/ gilt nur in der sub.[/quote]
und in allen von dieser sub aufgerufenen subs, wenn da welche sind.
my() gilt nur dür die sub, local() funktioniert da anders.
User since
2005-01-17
14563
Artikel
Admin1
Ja, stimmt ich habe mich nicht korrekt ausgedrückt. Der Gültigkeitsbereich ist innerhalb des Blocks, in der sie local definiert wurde, oder? Und damit ist sie dann auch für die in dieser sub aufgerufenen anderen subs sichtbar.
Oder habe ich das wieder verquer erklärt?
User since
2003-08-04
12208
Artikel
Admin1
ich glaub, das kann man in einem satz schlecht ausdrücken =)
User since
2005-01-17
14563
Artikel
Admin1
Fragen von Fragenden werden wohl verschieden verstanden oder ich werde alt. :rock: