[comp.mail.mh] Perl parsing mail headers

jas@ISI.EDU (Jeff Sullivan) (02/28/91)

You realize that this code doesn't work.

The construct:

while (<STDIN>) {
        if ($_ eq "\n") {$body = ""; }
        elsif (! defined $body) {$header .= $_; }
        else { $body .= $_; }
}


Will create a $body that is *local* to the block it's in; when it
exits the block, $body reverts to its (empty) value.



What you need is something like:


while (<STDIN>) {
        if ($_ eq "\n") {$nowbody = ""; }
        elsif (! defined $nowbody) {$header .= $_; }
        else { $body .= $_; }
}


Where $nowbody is just a flag that tells you where to put the $_ being
read in.  The defined state of the vaiable is preserved by perl.

jas