[Mimedefang] Testing for the existence of a header
David F. Skoll
dfs at roaringpenguin.com
Tue Sep 30 22:49:44 EDT 2008
Joseph Brennan wrote:
[code that slurps headers into a hash]
> if (/^(\S+): (.*)/)
I'm not sure a single space is required after the header name.
I would write this as:
if (/^(\S+):\s*(.*)/)
The greediness of "*" means that \s* will eat up all whitespace
before any (possible) non-whitespace value.
> Taking your example, then the contents of a header "X-ABC:" would be
> stored in $Header{'x-abc'}. You could test both existence:
> if ($Header{'x-abc'})
I would write: if (exists($Header{'x-abc'}))
It is possible, though maybe improbable, to have something like:
X-ABC: 0
and Perl treats that as false.
> and contents:
> if ($Header{'x-abc'} =~ /some string/)
If you are using "use strict; use warnings;" this might elicit a
warning. I'd write it as:
if (defined($Header{'x-abc'}) && ($Header{'x-abc'} =~ /some string/))
(Advanced Perl hackers may choose to avoid auto-vivification with an
extra exists() test first...)
Regards,
David.
More information about the MIMEDefang
mailing list