为什么不是';删除我的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;