fix messages which match multiple patterns send-via-redis
authorDobrica Pavlinusic <dpavlin@rot13.org>
Tue, 31 Aug 2010 09:51:56 +0000 (11:51 +0200)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Tue, 31 Aug 2010 09:51:56 +0000 (11:51 +0200)
scripts/mqr-track.pl

index 5b7ab20..74cdb3f 100755 (executable)
@@ -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";