my @regex = ( 'foo', 'b[a-z]' ); my $string = 'foo'; my $inc = inc(); &$inc( $string, $_ ) for @regex; print &$inc(); sub inc { my $count = 0; return sub { return $count unless @_; $count++ if $_[0] =~ /$_[1]/; }; }