Чтение и сопоставление текста .msg файла Outlook в Perl - PullRequest
1 голос
/ 25 октября 2019

У меня проблемы с сопоставлением текстовых файлов .msg с использованием Perl. Первый блок кода работает для печати всего сообщения, но мне просто нужно имя файла, если оно содержит определенную строку.

    use warnings;
    use strict;
    use Email::Outlook::Message;
    use Email::MIME;

    my $sourceDir = "c:/temp";

    open_msg("test.msg");

    sub open_msg {
       my $verbose = 0;
       my $msgFile = shift;
       my $origMsg = new Email::Outlook::Message "$sourceDir/$msgFile", $verbose or die "$!";
       my $mime = $origMsg->to_email_mime;
       print $mime->as_string;
       return ($origMsg);
    }

.msg файлы находятся в папке (в Windows). Я использовал приведенный ниже код для печати имен файлов .txt, но мне нужно использовать нечто подобное для файлов .msg.

#works for .txt files
my @files = glob "C:/temp";

foreach my $file (@files) {
open   (FILE, "$file");
while(my $line= <FILE> ){
    print "$file" if $line =~ /test_string/;
}
close FILE; 
} 

Спасибо!

1 Ответ

1 голос
/ 26 октября 2019

У меня нет файла .msg, который можно было бы протестировать, но как насчет замены этой строки:

print $mime->as_string;

... на такое утверждение?

print $mime->as_string if $mime->as_string =~ /test_string/;

Это должно сработать в том, что касается «печати его содержимого, если оно содержит test_string».

Если вы также хотите перебрать весь список *.msg файлов, попробуйте что-то вроде этого:

my @files = glob "C:/temp";

foreach my $file (@files) {
    open_msg($file);
}
...