我在使用perl中的Email:MIME模块时遇到问题。这可能是因为我使用它错了,但找到使用它的例子很困难。我很确定我应该使用完整消息的标量作为输入,但它不起作用。这是我的代码和输出
代码:
#!/usr/bin/perl
use Net::POP3;
use Email::MIME;
local $| = 1;
my $pop = Net::POP3->new('pop.mail.server');
print "Logging in....";
if ($pop->login('username','password')) {
print "logged in successfully\n";
my $msgs = $pop->list;
my @keys = keys(%$msgs);
my $msgr = $pop->get($keys[1]); #Selects a more or less random email for testing
my $msg = join("",@$msgr);
my $parsed = Email::MIME->new($msg);
foreach my $key (keys %$parsed) {print $key.":".$parsed{$key}."\n";}
}
输出:
Logging in....logged in successfully
body:
mycrlf:
body_raw:
parts:
ct:
header:
答案 0 :(得分:2)
始终use strict;
和use warnings;
。这将立即指出错误:
Global symbol "%parsed" requires explicit package name at p line 21.
第21行应该是:
foreach my $key (keys %$parsed) {print $key.":".$parsed->{$key}."\n";}
答案 1 :(得分:0)
我认为你的印刷声明中应该是$parsed->{ $key }