Subject: | Header parsing fails with misleading error message with unusual $\ values (particularly newline) |
When $\ has a nonstandard value, MIME::Parser::process_header ends up
writing out stray $\s to the internal $headstr scalar (I couldn't quite
track down where this was happening, but read_chunk seems plausible). As
a result, the resulting header can't be parsed. This is particularly
confusing with $\ set to \n (probably the most common non-null value),
because the leading newline is interpreted as a zero-length header,
which MIME::Parser interprets as an error in parsing (because not the
whole header was parsed), giving an error message saying that the
erroneous line is the line before the first line.
Fixing this is likely a simple matter of a "local $\" somewhere near the
start of process_header, and would probably be faster than documenting
the restriction.
Information common in bug reports that is almost certainly irrelevant in
this case:
$ perl -v
This is perl, v5.10.1 (*) built for i486-linux-gnu-thread-multi
$ uname -a
Linux desert 2.6.32-34-generic #77-Ubuntu SMP Tue Sep 13 19:40:53 UTC
2011 i686 GNU/Linux
To reproduce, set $\ to \n, then try to parse any message with at least
one header line.