http://qs1969.pair.com?node_id=351370


in reply to Coroutines in Perl

I'm not sure if I'm missing the point, but here's one example of a routine that uses lexical scoping, named blocks and goto to invoke different segments of code in the routine each time it's called.

use strict; use warnings; { my $location = "FIRST"; sub jumparound { goto $location; FIRST: { print "First segment.\n"; $location = "SECOND"; return; } SECOND: { print "Second segment.\n"; $location = "FIRST"; return; } } } jumparound(); jumparound(); jumparound();

And the output is:

First segment. Second segment. First segment.

This snippet seems to satisfy "preserve the values of their local variables between successive calls."

It also satisfies "appears to be like subroutines with multiple entry and exit points."

But I haven't read Knuth (and I'm beginning to feel like it's high time I do), so I'm not sure if my snippet satisfies all of the requirements.


Dave