Since you don't seem to be using the captures there's no point in remembering them so just increment the count each time.
use strict; use warnings; my $matchCount = 0; while( <DATA> ) { $matchCount += () = m{( first_string | second_string | third_string | fourth_string | fifth_string)}xg; } print qq{$matchCount matches found\n}; __DATA__ This is a test file matchme ljldjlfjd l;djfldjlf d test test test dljfldjlfjldjfldjlljdf one second_string dlfjldfj ljdfldjjf ldjfljdl dfljdlfj dfdlfj three ljfldjlj dlfjlasdj foiidufoiida matchdf dljfldsaofuoidfousdaof ladsjflasdof first_string dlfjodsuofuasdo sadoufosadu foasduf aosduf third_string
Produces.
3 matches found
I hope this is of interest.
Cheers,
JohnGG
Update: Oops, misread the OP, you are using the captures so ignore this.
Update 2: Code amended to keep the captures.
use strict; use warnings; my @matches = (); my $matchCount = 0; while( <DATA> ) { $matchCount += my( @caps ) = m{( first_string | second_string | third_string | fourth_string | fifth_string)}xg; push @matches, @caps; } print qq{$matchCount matches found: @matches\n}; __DATA__ This is a test file matchme ljldjlfjd l;djfldjlf d test test test dljfldjlfjldjfldjlljdf one second_string dlfjldfj ljdfldjjf ldjfljdl dfljdlfj dfdlfj three ljfldjlj dlfjlasdj foiidufoiida matchdf dljfldsaofuoidfousdaof ladsjflasdof first_string dlfjodsuofuasdo sadoufosadu foasduf aosduf third_string
3 matches found: second_string first_string third_string
In reply to Re: Printing the count for regex matches
by johngg
in thread Printing the count for regex matches
by learningperl01
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |