Hallo Ferdinand, hallo Leute, Am Samstag, 26. Februar 2005 23:38 schrieb Ferdinand Ihringer:
Ich habe folgendes Problem, dessen Lösung bestimmt einfach ist. Von der Struktur ist es folgendes Perlskript: use FreezeThaw qw(cmpStr);
Das Modul habe ich gerade nicht vorrätig, deshalb die theoretische Analyse ;-) [...]
while(my ($a, $b) = each %alphabet) { #Variante 1 if (strCmp($struktur, $b) == 0) { print "Gefunden $a\n" }; #Variante 2 if(strCmp($struktur, $b) == 0) { print "Gefunden $a\n"; return $a" } }
Bei meinem Test wird dies als Subroutine fünfmal in einer Schleife aufgerufen und es sollte 'hallo' gefunden werden. Bei Variante 1 kommt das auch: Gefunden: h Gefunden: a Gefunden: l Gefunden: l Gefunden: o Bei Variante 2 hingegen nicht: Gefunden: h Gefunden: l Gefunden: o Muss ich das verstehen? Oder hat irgendwer eine Idee, woran dies liegen könnte und wo ich zu suchen haben?
Das return, das ja normalerweise zum Verlassen einer Subroutine o. ä. verwendet wird (siehe auch perldoc -f return), scheint zu verursachen, dass jeweils ein Schleifendurchlauf übersprungen wird. Überleg Dir eine Lösung, die ohne das return in der Schleife auskommt, und es müsste funktionieren ;-) Gruß Christian Boltz --
man procmailex Procmailex, ist das sowas wie Ameisen-Ex oder Fliegen-Ex? Dann hätte ich gerne ein große Familienpackung. [Thorsten Haude in suse-linux]