in reply to Multi-stage flip-flop?
RonW:
Here's an alternative, though the syntax isn't as nice as your proposed syntax:
#!/usr/bin/env perl use strict; use warnings; my $fn = \&doOtherProcessing; while (<DATA>) { if (/for/) {$fn = \&doStage1} if (/their/) {$fn = \&doStage2} if (/fruit/) {$fn = \&doStage3} if (/lazy/) {$fn = \&doOtherProcessing} $fn->($_); } sub doStage1 { print "1: ",shift } sub doStage2 { print "2: ",shift } sub doStage3 { print "3: ",shift } sub doOtherProcessing { print "*: ",shift } __DATA__ now is the time for all good men to come to the aid of their party. Time flies like an arrow fruit flies like a banana. The quick red fox jumps over the lazy brown dog. Etaoinshrdlu.
Basically we're just using $fn to be a combination state variable / function pointer to track the current state of your chain of comparisons, and selecting a different handler at each match:
*: now is the time 1: for all good men to 1: come to the aid of 2: their party. 2: Time flies like an arrow 3: fruit flies like a banana. 3: The quick red fox *: jumps over the lazy *: brown dog. *: Etaoinshrdlu. *:
...roboticus
When your only tool is a hammer, all problems look like your thumb.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Multi-stage flip-flop?
by RonW (Parson) on Dec 11, 2014 at 02:15 UTC | |
by roboticus (Chancellor) on Dec 11, 2014 at 12:53 UTC |