1

我真的不明白如何将此代码的输出分配给每一行输出的变量或一个大块变量。如果有帮助,我正在使用 Mail::POP3Client。我希望分配一个变量的输出是“ print "$_\n" if /^(From|Subject):/i;"

my $count = $pop->Count();
if ($count < 0) {
    print $pop->Message();
} elsif ($count == 0) {
    print "no messages\n";
} else {
    print "$count messsages\n\n";

    for my $i (1 .. $count) {
        foreach ($pop->Head($i)) {
            print "$_\n" if /^(From|Subject):/i;
        }
        print "\n";
    }
}
4

2 回答 2

3

您有两种选择,具体取决于您希望如何处理数据

定义一个变量并依次附加到它

my $from = '';
...
foreach ($pop->Head($i)) {
    $from .= "$_\n" if (/^(From|Subject):/i);
}

这将为您提供一个包含所有Froms 和Subjects 的大字符串。或者你定义一个数组并追加到这个数组的末尾

my @from;
...
foreach ($pop->Head($i)) {
    push @from, $_ if (/^(From|Subject):/i);
}

这将产生一个数组,其中每个元素包含一个FromSubject一行。

根据Mail::POP3Client,如果要删除 POP 服务器上的所有邮件

for my $i (1 .. $count) {
    $pop->Delete($i);
}

关闭前应将所有消息标记为删除。当你最终关闭连接时,

$pop->Close();

将处理所有待处理的删除。

于 2013-01-21T21:08:39.537 回答
2

事先制作一个数组,称为@mystuff. 取而代之的是print "$_\n" if /^(From|Subject):/i;,做出来push(@mystuff, $_) if /^(From|Subject):/i;。最后,您有一组当前正在 foreach 中打印的内容。

于 2013-01-21T21:07:40.397 回答