in reply to Re: Multi-stage flip-flop?
in thread Multi-stage flip-flop?
use strict; use warnings; use Data::Dump; { my %state; sub till { my @phases=@_; my ($file,$line)= (caller)[1..2]; my $state = \$state{$file,$line}; $$state //= 0; $phases[1+$$state]->($_); if ($phases[$$state]) { $$state += 2; $$state %= @phases; } } } sub doStage1 { print "1: ",shift } sub doStage2 { print "2: ",shift } sub doStage3 { print "3: ",shift } sub doOtherProcessing { print "*: ",shift } while (<DATA>){ till ( - /for/ => \&doOtherProcessing, - /their/ => \&doStage1, - /fruit/ => \&doStage2, - /lazy/ => \&doStage3, ); } __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.
output:
*: now is the time *: for all good men to 1: come to the aid of 1: their party. 2: Time flies like an arrow 2: fruit flies like a banana. 3: The quick red fox 3: jumps over the lazy *: brown dog. *: Etaoinshrdlu.
Cheers Rolf
(addicted to the Perl Programming Language and ☆☆☆☆ :)
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^3: Multi-stage flip-flop? ( till() - proof of concept)
by RonW (Parson) on Dec 12, 2014 at 02:44 UTC | |
by LanX (Saint) on Dec 12, 2014 at 03:00 UTC | |
by RonW (Parson) on Dec 12, 2014 at 20:23 UTC | |
by LanX (Saint) on Dec 12, 2014 at 12:34 UTC | |
by RonW (Parson) on Dec 12, 2014 at 19:38 UTC | |
by LanX (Saint) on Dec 12, 2014 at 19:47 UTC | |
by RonW (Parson) on Dec 12, 2014 at 20:37 UTC | |
|