my ($fh, $part, $enc, $part_nr, $fhref, $more) = @_;
my $s = add_text_body($enc, $part, $part_nr, $fhref);
- # kill any leading or trailing whitespace lines
- $s =~ s/^\s*$//sgm;
- $s =~ s/\s+\z//s;
+ return if $s eq '';
+
+ $s .= "\n"; # ensure there's a trailing newline
- if ($s ne '') {
- # kill per-line trailing whitespace
- $s =~ s/[ \t]+$//sgm;
- $s .= "\n" unless $s =~ /\n\z/s;
- }
$fh->write($s);
}
# scan through all parts, looking for displayable text
$mime->walk_parts(sub {
my ($part) = @_;
- $rv .= add_text_body($enc, $part, \$part_nr, $full_pfx, 1);
+ $part = add_text_body($enc, $part, \$part_nr, $full_pfx, 1);
+ $rv .= $part;
+ $rv .= "\n" if $part ne '';
});
$mime->body_set('');
$rv;
$s .= flush_quote(\@quot, \$n, $$part_nr, $full_pfx, 1,
$do_anchor);
}
- $s .= "\n" unless $s =~ /\n\z/s;
++$$part_nr;
+
+ $s =~ s/[ \t]+$//sgm; # kill per-line trailing whitespace
+ $s =~ s/\A\n+//s; # kill leading blank lines
+ $s =~ s/\s+\z//s; # kill all trailing spaces (final "\n" added if ne '')
$s;
}