Thread Pythagorische Tripel
(18 answers)
Opened by Ronnie at 2008-10-19 15:57
also ich weiß nicht ...
Quote Ehrlich gesagt eine allgemeine Lösung mit Continuations wär mir eigentlich lieber! Moritz hat sich schon daran versucht, allerdings erscheint mir ![]() ![]() Schade dass es für Perl keinen verlässlichen Macromechanismus gibt bzw. mir aufdrängt. Sonst ginge nämlich sowas: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 { my $j=0; my $resume=0; my $db=0; # Debugflag sub gather { goto $resume if $resume; # Dispatcher while (++$j<=5) { $resume="rein", goto raus unless ( $j%2 ); # Take rein: print "$j\n" if $db; } $resume=0; # Ausgang return; raus: print "-" if $db; return $j; } } while ( my $a=gather() ) { print "<<$a>>"; } Syntaktisch müsste es allerdings so aussehen, um akzeptabel zu sein Ich bin am überlegen ob man sowas mit B::Deparse und anschließendem eval des veränderten Codes umsetzen könnte/sollte ... naja irgendwie können auf jeden Fall ! Ne Alternative wäre wenn man den Callstack um eine Ebene poppen könnte, sodass ein return auf den drüberliegende Ebene greifen würde... dann bräuchte man keinen Codefilter mehr und man könnte echte foreach-Schleifen nehmen. Schwierig schwierig ... me and my writeups
|