use strict; use warnings; my $success_pattern = qr{ ^ (?: 1,1,\d*,\d*,\d*,\d* | \d*,\d*,1,1,\d*,\d* | \d*,\d*,\d*,\d*,1,1 ) $ }x; my $failure_pattern = $success_pattern; $failure_pattern =~ s/(?<=1,)1/2/g; my $count_of_success_records = 0; my $count_of_failure_records = 0; while (my $record = ) { $count_of_success_records++ if $record =~ $success_pattern; $count_of_failure_records++ if $record =~ $failure_pattern; } print "Total success records: $count_of_success_records\n"; print "Total failure records: $count_of_failure_records\n"; exit 0; __DATA__ 1,1,,,, 1,2,,,, 3,4,1,1,, 1,1,1,1,, 5,6,3,4,1,2 1,1,,,, 1,1,1,1,1,1 #### use strict; use warnings; my $success_pattern = qr/^(?:\d?,\d?,){0,2}1,1/; my $failure_pattern = qr/^(?:\d?,\d?,){0,2}1,2/; my $count_of_success_records = 0; my $count_of_failure_records = 0; while (my $record = ) { $count_of_success_records++ if $record =~ $success_pattern; $count_of_failure_records++ if $record =~ $failure_pattern; } print "Total success records: $count_of_success_records\n"; print "Total failure records: $count_of_failure_records\n"; exit 0; __DATA__ 1,1,,,, 1,2,,,, 3,4,1,1,, 1,1,1,1,, 5,6,3,4,1,2 1,1,,,, 1,1,1,1,1,1