in reply to Parsing email for headers

Did you already have a look at Email::MIME and more specifically Email::MIME::Header? Or perhaps Email::Simple which has a header_pairs method that returns a list of pairs describing the contents of the header. Every other value, starting with and including zeroth, is a header name and the value following it is the header value.

If you are bothered by differences in upper-case/lower-case use of the headers, why don't you normalize all header names extracted from the eamil to lower-case and check against the lower-cased name of the header?

CountZero

A program should be light and agile, its subroutines connected like a string of pearls. The spirit and intent of the program should be retained throughout. There should be neither too little or too much, neither needless loops nor useless variables, neither lack of structure nor overwhelming rigidity." - The Tao of Programming, 4.1 - Geoffrey James