Schrift
[thread]6953[/thread]

While Schleife bei bestimmten Ereigniss sofort....: abbrechen. Geht das?

Leser: 2


<< |< 1 2 >| >> 11 Einträge, 2 Seiten
zipster
 2005-05-03 16:50
#54509 #54509
User since
2004-09-06
458 Artikel
BenutzerIn
[default_avatar]
Hi,

gibt es eine Möglichkeit eine While Schleife bei einem bestimmten Ereigniss sofort zu beenden?

while schleife fängt an und bei der 3 zeile der schleife ist $anzahl plötzlich 3 und dann soll sie sofort abbrechen.

Ist sowas möglich?


Ich hoffe ich konnte mich verständlich ausdrücken... ;)
coax
 2005-05-03 17:14
#54510 #54510
User since
2003-08-11
457 Artikel
BenutzerIn
[default_avatar]
perldoc -f last
,,Das perlt aber heute wieder...'' -- Dittsche
zipster
 2005-05-03 17:51
#54511 #54511
User since
2004-09-06
458 Artikel
BenutzerIn
[default_avatar]
Das gilt doch aber nur an der Stelle wo "last" steht, das ist doch nicht für die ganze while Schleife gültig, oder hab ich da was falsch verstanden?
Strat
 2005-05-03 17:55
#54512 #54512
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
last ist immer fuer die uebergeordnete schleife gueltig. wenn du eine aeussere beenden willst, dann hilft dir last LABEL...
Code: (dl )
1
2
3
4
5
6
7
8
9
for my $i (1..10) {
 THIS_LOOP: for my $j (1..10) {
   for my $k (1..10) {
     last THIS_LOOP if $k > $i;
last if $k > $j;
print "$i.$j.$k\n";
   }
 }
}

man kann sogar mit last/redo/next aus einer subroutine  herausspringen, aber das gibt zu recht eine haessliche warnung ;-)\n\n

<!--EDIT|Strat|1115128584-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
zipster
 2005-05-03 19:07
#54513 #54513
User since
2004-09-06
458 Artikel
BenutzerIn
[default_avatar]
Irgendwie funktioniert das mit dem last leider nicht.
Wird aber sicher nicht am last liegen.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
...........................
my $server = IO::Socket::INET->new(

LocalPort => 2005,

type => SOCK_STREAM,

Reuse => 1,

Listen => 10

) or die "Server läuft nicht: $@\n";
my $select = IO::Select->new($server);
while(my @readable = $select->can_read)
{

last if (SERVICE_STOP_PENDING == DoEvents());
foreach my $socket (@readable)
{
if($socket == $server)
{
my $client = $socket->accept;
..............................


:rock:\n\n

<!--EDIT|zipster|1115133503-->
Strat
 2005-05-03 19:17
#54514 #54514
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
dann funktioniert vielleicht der Vergleich nicht, sodass das last gar nicht ausgefuehrt wird?
Code: (dl )
1
2
3
4
5
6
7
8
my $rc = DoEvents();
if (SERVICE_STOP_PENDING == $rc) {
 print "jezz gibbs last\n";
 last;
}
else {
printf "Status: '%s' => '%s'\n", SERVICE_STOP_PENDING, $rc;
}
\n\n

<!--EDIT|Strat|1115133550-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
zipster
 2005-05-03 20:01
#54515 #54515
User since
2004-09-06
458 Artikel
BenutzerIn
[default_avatar]
Ja mein Problem ist das das als Sevice läuft, und ich da einen print leider nicht sehe. Ich werde aber mal versuchen aus dem Service in ne Datei zu schreiben um mal ne rückmeldung zu bekommen
Strat
 2005-05-03 20:08
#54516 #54516
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
dann wirf den STDOUT in eine Datei weg...
Code: (dl )
1
2
open (STDOUT, ">", $logfile) or die $!;
print "blarhabarber\n";
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Crian
 2005-05-04 12:47
#54517 #54517
User since
2003-08-04
5873 Artikel
ModeratorIn
[Homepage]
user image
oder select(HANDLE);
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
zipster
 2005-05-06 11:44
#54518 #54518
User since
2004-09-06
458 Artikel
BenutzerIn
[default_avatar]
Ich bekomme es nicht hin den Service Stoppen zu lassen.
:(
Kann mir vieleicht jemand helfen.

Er bleibt vor der while Schleife stehen und wartet darauf das ein Client connected. Und wenn dieser Code in dem Service drin ist bekomme ich ihn nicht mehr beendet.
Wenn ich diese Whileschleife raus nehme funktioniert das Starten und Stoppen einwandfrei... HILFE!
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
while(my @readable = $select->can_read) 
{
foreach my $socket (@readable)

{

if($socket == $server)

{

my $client = $socket->accept;

print "New client connects\n";
$select->add($client);

$client->print("Welcome\n");

}
\n\n

<!--EDIT|zipster|1115365785-->
<< |< 1 2 >| >> 11 Einträge, 2 Seiten



View all threads created 2005-05-03 16:50.