1

このコードの出力を、出力の各行の変数または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

データの処理方法に応じて、2つのオプションがあります

変数を定義し、それに連続して追加します

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

Fromこれにより、すべてのsとsが一緒になっている大きな文字列が得られますSubject。または、配列を定義して、この配列の最後に追加します

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

これにより、各要素に1つFromまたは1つSubjectの行が含まれる配列が作成されます。

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 に答える