For Schleife
Suse
- perl
Ich hab da mal ne Frage, die man bestimmt schnell beantworten kann, wenn man es weiß. Ich weiß es leider nicht.
Bei mir läuft ein Perl-Skript nicht und ich frage mich, ob es an meiner for-Schleife liegt, da der Rest syntaktisch richtig ist.
for($i=0;(($Num)=$cursor->fetchrow)&& !($founda || $foundb);$i++){ }
Nun zu meiner Frage, muss
(($Num)=$cursor->fetchrow)&& !($founda || $foundb)
eingeklammert werden?
Oder liegt es am ! ? Wenn ja, wie schreibt man es dann?
Vielen Dank im Vorraus.
Ich hab da mal ne Frage, die man bestimmt schnell beantworten kann, wenn man es weiß. Ich weiß es leider nicht.
Bei mir läuft ein Perl-Skript nicht und ich frage mich, ob es an meiner for-Schleife liegt, da der Rest syntaktisch richtig ist.
du verwendest hoffentlich use strict und -w um dir die Warnungen anzeigen zu lassen.
for($i=0;(($Num)=$cursor->fetchrow)&& !($founda || $foundb);$i++){ }
Ich mein, man kann das so machen, aber warum so unlesbar?
my $i = 0;
while(my $num = $cursor->fetchrow) {
$i++; # wenn du wirklich einen Zähler brauchst.
last if $founda ; # was immer das ist
last if $foundb ; # was immer das ist
}
halte ich für übersichtlicher.
Struppi.
du verwendest hoffentlich use strict und -w um dir die Warnungen anzeigen zu lassen.
nö, leider nicht
last if $founda ; # was immer das ist
last if $foundb ; # was immer das ist
$founda=true;
$foundb=false;
Mittlerweile glaube ich, das es an true und false liegt, kann es sein, das es sowas in perl nicht gibt, sondern das man 0 und 1 verwenden muss?
du verwendest hoffentlich use strict und -w um dir die Warnungen anzeigen zu lassen.
nö, leider nicht
Damit verbaust du dir einen Haufen Möglichkeiten Fehler in deinem Skript zu finden.
last if $founda ; # was immer das ist
last if $foundb ; # was immer das ist$founda=true;
$foundb=false;Mittlerweile glaube ich, das es an true und false liegt, kann es sein, das es sowas in perl nicht gibt, sondern das man 0 und 1 verwenden muss?
wie zum Beispiel solche, das wäre mit use strict gar nicht möglich gewesen. Nein, es gibt kein true/false Schlüßelwort.
Aber wie ich in meinem Beispiel schon schrieb, ist dies wirklich nötig?
Geht sowas nicht:
last if Kondition1 || Kondition2;
Struppi.
hallo Suse,
for($i=0;(($Num)=$cursor->fetchrow)&& !($founda || $foundb);$i++){ }
Nun zu meiner Frage, muss
(($Num)=$cursor->fetchrow)&& !($founda || $foundb)
eingeklammert werden?
Dein Problem liegt mit großer Wahrscheinlichkeit genau dort, wo du es vermutest. Ein Standardbeispiel für "for" mit einer kurzen Erläuterung findest du zum Beispiel unter http://perl-seiten.bei.t-online.de/perl/perl_ctrl.html#for. Deine Bedingung ist allerdings nicht ganz einfach zu verstehen, möglicherweise fehlt wirklich nur eine Klammer:
for($i=0;((($Num)=$cursor->fetchrow) && !($founda || $foundb));$i++){ }
Oder liegt es am ! ?
Das ist kaum anzunehmen.
Grüße aus Berlin
Christoph S.