my ($regex) = map {qr/($_)/} join '|', map {quotemeta} @pat_array; my %match_count; for 1..$InStartLineNumber; while () { if ($_=~$regex) { $match_count{$1}++; } } for my $k (sort keys %match_count) { print $k,": ",$match_count{$k},"\n"; }