gpt4 book ai didi

perl - 如何按日期对 mbox 文件进行排序?

转载 作者:行者123 更新时间:2023-12-04 07:10:55 25 4
gpt4 key购买 nike

我想知道如何修改下面的代码来剥离=20多行末尾的字符,主要是按时间顺序将消息从第一个接收或发送到最后一个。我不确定这是否是内部 Perl 例程。

#!/usr/bin/perl
use warnings;
use strict;
use Mail::Box::Manager;

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 ($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->body;

# Strip all quoted text
$body =~ s/^>.*$//msg;

print <<"";
From: $from
To: $to
Date: $date
$body

}

尝试运行此程序时,出现以下错误:

“我的”变量 $msg 掩盖了 x.pl 第 16 行相同范围内的早期声明。
x.pl 第 15 行的语法错误,靠近 ") ) "
x.pl 第 31 行,“}”附近的语法错误
(可能是从第 25 行开始的失控的多行 << 字符串)
x.pl 的执行由于编译错误而中止。

我不确定为什么,因为语法看起来不错。

最佳答案

我猜那些 =20 的实例位于邮件正文中。读一点documentation for Mail::Message将显示此有用的说明:

BE WARNED that this returns you an object which may be encoded: use decoded() to get a body with usable data.



因此,而不是调用 $msg->body在您的循环中,只需调用 $msg->decoded->string .

使用 Mail::Message::timestamp 时完成排序应该是最容易的。 :
...
for my $msg ( sort { $a->timestamp <=> $b->timestamp } $folder->messages) )
...

关于perl - 如何按日期对 mbox 文件进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/368271/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com