in reply to Re: Multi-stage flip-flop?
in thread Multi-stage flip-flop?

If you use closures, you can force a different internal state for each range operator, e.g.:
sub mkrange { my ($r1, $r2) = @_; return sub { /$r1/../$r2/ }; } my $range1 = mkrange(qr/FIRST/, qr/SECOND/); my $range2 = mkrange(qr/THIRD/, qr/FOURTH/); while (<DATA>) { if ( $range1->() ) { print "R1: $_"; } if ( $range2->() ) { print "R2: $_"; } } __END__ junk FIRST 1 2 3 SECOND junk THIRD 4 5 6 FOURTH junk