in reply to Printing the count for regex matches

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