Mailinglist Archive: opensuse-programming-de (46 mails)
| < Previous | Next > |
Re: Perl, FreezeThaw und Hashes
- From: Ferdinand Ihringer <Ferdinand.Ihringer@xxxxxx>
- Date: Fri, 4 Mar 2005 19:05:32 +0100
- Message-id: <200503041905.32399.Ferdinand.Ihringer@xxxxxx>
Hallo,
Am Donnerstag 03 März 2005 19:58 schrieb Christian Boltz:
> 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 ;-)
Ich habe es ja in einer Subroutine. Das schrieb ich nur nachtraeglich dazu,
aber doch noch lesbar. Inzwischen geht es ja. Und dieses Projekt werde ich
sowieso nur noch einpaar Tage verfolgen. Dann dokumentiere ich es. Brenne
alles auf CD. Drucke es aus. Stecke alles in einen Briefumschlag, sende es in
der Hoffnung, nie wieder von ihm zu sehen, an den Bundeswettbewerb Informatik
und bin glücklich.
Soviel zur notwendigen Qualität. :-)
Ferdinand
Am Donnerstag 03 März 2005 19:58 schrieb Christian Boltz:
> 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 ;-)
Ich habe es ja in einer Subroutine. Das schrieb ich nur nachtraeglich dazu,
aber doch noch lesbar. Inzwischen geht es ja. Und dieses Projekt werde ich
sowieso nur noch einpaar Tage verfolgen. Dann dokumentiere ich es. Brenne
alles auf CD. Drucke es aus. Stecke alles in einen Briefumschlag, sende es in
der Hoffnung, nie wieder von ihm zu sehen, an den Bundeswettbewerb Informatik
und bin glücklich.
Soviel zur notwendigen Qualität. :-)
Ferdinand
| < Previous | Next > |