in reply to Capture/Counting text between patterns across multiple lines

The search for EDUCATION just reports the number of lines (paragraphs in this case) which have at least one match. I believe that this is because the search is in a scalar context. The simplest change would be to replace the search with a substitution like: $count += (s/EDUCATION/EDUCATION/g); but that's probably not so efficient. Another approach would be to give the original search a list context like: $count += () = (/EDUCATION/g); but that's not quite as readable. To put this into context, you could rewrite the while block to:
while (<IN>) { if (/^\d+\sof\s\d+\sDOCUMENTS$/mx .. /^No.\s(\w+)$/mx){ $casename=$1; # $count += (s/EDUCATION/EDUCATION/g); $count += () = (/EDUCATION/g); } }