У меня есть небольшая программа для заказа и сортировки сообщений электронной почты с выводом в текстовый файл с использованием $msg->decoded->string
. Программа perl выводит на stdout
, и я перенаправляю ее в текстовый файл. Однако gedit не может открыть этот текстовый файл из-за проблемы с набором символов, и я хотел бы знать, как восстановить или установить набор символов с помощью perl.
Программа теперь такая:
#!/usr/bin/perl
use warnings;
use strict;
use Mail::Box::Manager;
open (MYFILE, '>>data.txt');
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;
# Strip all quoted text
$body =~ s/^>.*$//msg;
print MYFILE <<"";
From: $from
To: $to
Date: $date
$body
}
Однако у меня возникает та же проблема, что я не могу открыть файл с помощью gedit, даже если он работает с vi или чем-то подобным. Если в файле есть символы, отличные от Юникода, это нарушит его?