=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
}
これを実行しようとすると、次のエラーが発生します。
"my" 変数 $msg は、x.pl 行 16 で同じスコープ内の以前の宣言をマスクします。 x.pl 行 15 の構文エラー ") ) " x.pl 行 31 の構文エラー "}" の近く (暴走した複数行 << 25 行目から始まる文字列) x.pl の実行は、コンパイル エラーのために中止されました。
構文は問題ないように見えるので、理由はわかりません。