From: Dobrica Pavlinusic Date: Tue, 31 Aug 2010 09:51:56 +0000 (+0200) Subject: fix messages which match multiple patterns X-Git-Url: http://git.rot13.org/?a=commitdiff_plain;h=refs%2Fheads%2Fsend-via-redis;hp=5a98142981d541ad62fe390925bb6f12318a7459;p=MQR.git fix messages which match multiple patterns --- diff --git a/scripts/mqr-track.pl b/scripts/mqr-track.pl index 5b7ab20..74cdb3f 100755 --- a/scripts/mqr-track.pl +++ b/scripts/mqr-track.pl @@ -18,12 +18,15 @@ MQR::Redis->redis->psubscribe('*', sub { $regex = join('|', keys %$track); warn "# track regex: $regex\n"; } elsif ( $regex && $message =~ m/($regex)/ ) { - my $found = $1; - my $body = "TRACK [$found] $channel | $message"; - print "$body\n"; - my $to = $track->{$found} || die "no $1 in ",dump($track); - $to =~ s/^MSG /SEND /g; - MQR::Redis->publish( $to, $body ); + my $m = $message; + while ( $m =~ s/($regex)// ) { + my $found = $1; + my $body = "TRACK [$found] $channel | $message"; + print "$body\n"; + my $to = $track->{$found} || die "no $1 in ",dump($track); + $to =~ s/^MSG /SEND /g; + MQR::Redis->publish( $to, $body ); + } } } else { warn "$channel | $message\n";