为什么不是';删除我的HTML?

为什么不是';删除我的HTML?,html,perl,strip,Html,Perl,Strip,我正在尝试使用以下代码,但尚未测试,因为我遇到以下错误: #!/usr/bin/perl use warnings; use strict; use Text::Wrap; use Mail::Box::Manager; use HTML::Obliterate qw(extirpate_html); open (MYFILE, '>>data.txt'); binmode(MYFILE, ':encoding(UTF-8)'); my $file = shift || $E

我正在尝试使用以下代码,但尚未测试,因为我遇到以下错误:

#!/usr/bin/perl
use warnings;
use strict;
use Text::Wrap;
use Mail::Box::Manager;
use HTML::Obliterate qw(extirpate_html);


open (MYFILE, '>>data.txt');
binmode(MYFILE, ':encoding(UTF-8)');


my $file = shift || $ENV{MAIL};
my $mgr = Mail::Box::Manager->new(
    access          => 'r',
);

my $folder = $mgr->open( folder => $file )
or die "$file: Unable to open: $!\n";

for my $msg ( sort { $a->timestamp <=> $b->timestamp } $folder->messages)
{
    my $to          = join( ', ', map { $_->format } $msg->to );
    my $from        = join( ', ', map { $_->format } $msg->from );
    my $date        = localtime( $msg->timestamp );
    my $subject     = $msg->subject;
    my $body        = $msg->decoded->string;


if ( $msg->isMultipart ) {
    foreach my $part ( $msg->parts ) {
        if ( $part->contentType eq 'text/html' ) {
          my $nohtml = extirpate_html( $msg );
$body =~ s/^>.*$//msg;
$Text::Wrap::columns=80;
print MYFILE wrap("", "", <<"");
\n
From: $from
To: $to
Date: $date
Subject: $subject
\n
$body
        }

else {


$body =~ s/^>.*$//msg;
$Text::Wrap::columns=80;
print MYFILE wrap("", "", <<"");
\n
From: $from
To: $to
Date: $date
Subject: $subject
\n
$body

}

}}
#/usr/bin/perl
使用警告;
严格使用;
使用Text::Wrap;
使用Mail::Box::Manager;
使用HTML::删除qw(删除HTML);
打开(MYFILE,'>>data.txt');
binmode(MYFILE,’:编码(UTF-8)’;
my$file=shift | |$ENV{MAIL};
my$mgr=Mail::Box::Manager->new(
access=>r',
);
我的$folder=$mgr->open(folder=>$file)
或死“$文件:无法打开:$!\n”;
对于我的$msg(排序{$a->timestamp$b->timestamp}$folder->messages)
{
my$to=join(‘,’,映射{$\->format}$msg->to);
my$from=join(“,”,映射{$\格式}$msg->from);
my$date=localtime($msg->timestamp);
my$subject=$msg->subject;
我的$body=$msg->decoded->string;
如果($msg->isMultipart){
foreach my$part($msg->parts){
如果($part->contentType eq'text/html'){
my$nohtml=extirpate_html($msg);
$body=~s/^>*$//msg;
$Text::Wrap::columns=80;
打印MYFILE wrap(“,”,,因此第36行似乎是

print MYFILE wrap("", "", <<"");
这是没有意义的,因为前面的
if
尚未关闭(有}的第44行在终止符
之前,因此它被视为用于包装的文本。Perl注意到这一点,并建议您这可能是罪魁祸首:

(Might be a runaway multi-line << string starting on line 36)

(可能是对您修改后的问题的失控多行答案:

你没有删除消息正文,而是删除了整个消息。然后你就不会在任何地方使用它了

my $nohtml = extirpate_html( $msg );
$body =~ s/^>.*$//msg;
$Text::Wrap::columns=80;
print MYFILE wrap("", "", <<"");
\n
From: $from
To: $to
Date: $date
Subject: $subject
\n
$body

然后将
$nohtml
作为包装的消息正文。

您的编辑完全改变了问题的性质。编辑问题应该保留原始内容。如果问题已经得到回答,请在结尾添加澄清。现在问题一团糟。您需要尽可能小的示例来说明问题你有。试着使用HTML::Enterminate by isteself,而不用完成你要做的其他任务。这会让其他人更容易找到你的问题。提问者需要认真地问,为什么使用隐形终结者是个好主意,尤其是因为这些终结者导致了这个问题。谢谢你的回答nse.我按照您的建议进行了更改,但整个文件中仍有“
”。看起来根除失败了,无法判断。如果其他方法都不起作用,而且正文对您来说也没有问题,请添加$body=~s/
//msg;以删除它们。
(Might be a runaway multi-line << string starting on line 36)
my $nohtml = extirpate_html( $msg );
$body =~ s/^>.*$//msg;
$Text::Wrap::columns=80;
print MYFILE wrap("", "", <<"");
\n
From: $from
To: $to
Date: $date
Subject: $subject
\n
$body
my $nohtml = extirpate_html( $body );
$nohtml =~ s/^>.*$//msg;