Folks coming from a sed or awk background tend to assume that '$' and '^' match the beginning and end of the line,
rather than then beginning and end of the string.
Adding the '/m' flag to your regex makes it behave as most people expect it should.

For common regular expressions like e-mail addresses, phone numbers, dates, etc., have a look at the Regexp::Common module. Also, be cautions about slapping modifier flags onto existing regular expressions, as they can drastically alter their meaning. See http://www.perlmonks.org/?node_id=484238 for an interesting discussion on the effects of blindly modifying regular expression flags.