Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]8339[/thread]

aktuell laufende Schleife beenden

Leser: 1


<< >> 3 Einträge, 1 Seite
the-loader
 2006-09-16 15:47
#69966 #69966
User since
2006-08-28
25 Artikel
BenutzerIn
[default_avatar]
hi
ich hab folgendes problem...
use Net::FTP;
$ftp = Net::FTP->new("$ip") or last;
$ftp->login("user", "password") or last;
$ftp->mkdir("/$dir/") or last;
das ganze steht in ner while schleife. wenn er jetz versucht zu connecten und es nicht geht soll er die aktuelle schleife verlassen und die while schleife entsprechene weiterhin ausführen (mit ner anderen ip)
ich habe jetz hier nicht alles reingeschrieben.
soweit funzt es auch alles nur wenn er mal keine verbindung herstellen kann fürt er die schleife gar nicht mehr aus er geht also komplett aus der schleife.

hoffe mal ihr wist was ich meine. ist irgentwie scheiße zu erklären...
also wie mach ich das das er die schleife mit ip1 nicht weiter ausfürt und dann die schleife mit ip2 nochmal ausfürt sprich welches wort muss ich für last einsetzen? oder geht das so garnicht?

danke schonmal

cu
nepos
 2006-09-16 15:57
#69967 #69967
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hm, wie waerst mit next statt last? last springt komplett aus der Schleife. next macht einfach mit dem naechsten Wert weiter.
Strat
 2006-09-23 14:22
#69968 #69968
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
Oft ist es hilfreich, der Schleife ein Label zu verpassen, und dann next/last/redo Label zu verwenden. Ein next/last/redo ohne Label wirkt naemlich nur auf die innerste Schleife
Code: (dl )
1
2
3
4
5
6
7
VALUE:
for my $value (1..10) {
....
if( $value % 2 == 0 ) { # wenn gerade zahl
next VALUE;
}
} # for


Hier sieht man das Problem deutlich:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
for my $value (1..10) {
print "Before: $value\n";
{ # block, also acts as loop
print "inside1: $value\n";
if( $value % 2 == 0 ) {
print "inside2: $value -> skip\n";
next; # bezieht sich nur auf block, nicht auf for
} # if
print "inside 3: $value\n";
} # block
print "after: $value\n";
} # for
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
<< >> 3 Einträge, 1 Seite



View all threads created 2006-09-16 15:47.