Mailinglist Archive: opensuse-programming-de (86 mails)

< Previous Next >
Re: Perl, FreezeThaw und Hashes
  • From: Christian Boltz <suse@xxxxxxxxx>
  • Date: Thu, 3 Mar 2005 19:58:37 +0100
  • Message-id: <200503031958.38051@xxxxxxxxxxxxxxx>
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]

< Previous Next >
References