在 Perl 中读取和文本匹配 Outlook .msg 文件
Reading and text matching Outlook .msg file in Perl
我在使用 Perl 匹配 .msg 文件时遇到问题。第一个代码块用于打印整个消息,但如果它包含特定字符串,我只需要文件名。
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;
}
谢谢!
我手边没有任何 .msg
文件可以用来测试,但如何替换此行:
print $mime->as_string;
...用这样的语句?
print $mime->as_string if $mime->as_string =~ /test_string/;
就 "print its contents if it contains test_string" 而言,这应该可以解决问题。
如果您还想遍历整个 *.msg
文件列表,请尝试这样的操作:
my @files = glob "C:/temp";
foreach my $file (@files) {
open_msg($file);
}
我在使用 Perl 匹配 .msg 文件时遇到问题。第一个代码块用于打印整个消息,但如果它包含特定字符串,我只需要文件名。
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;
}
谢谢!
我手边没有任何 .msg
文件可以用来测试,但如何替换此行:
print $mime->as_string;
...用这样的语句?
print $mime->as_string if $mime->as_string =~ /test_string/;
就 "print its contents if it contains test_string" 而言,这应该可以解决问题。
如果您还想遍历整个 *.msg
文件列表,请尝试这样的操作:
my @files = glob "C:/temp";
foreach my $file (@files) {
open_msg($file);
}