mbox üzenetek listázása, összehasonlítása

Fórumok

Sziasztok!

mbox fájlok tartalmát kéne összehasonlítanom, de nem szeretnék rá programot írni. Nem tudtok kész megoldásról? Nekem az is elég lenne, ha találnék egy olyan progit, amely a mutthoz hasonlóan kilistázza az üzenetek egy szövegfájlba. Ötlet?

Hozzászólások

Bocs, most látom, hogy már írtam ilyet. Bár MIME támogatás az nincs.


#!/usr/bin/perl -CSD

# Author: Andor Toth <t.andor_at_freemail.hu>
# -CSD az UTF-8 miatt, lasd man perlrun

use strict;
use utf8;

my @F;
my $n = 0;
my %a;
my $active = 1;
my $prevline;
my $last = 0;

if (@ARGV == 0 or $ARGV[0] eq '-h' or $ARGV[0] eq '--help') {
    print "lsmail: List mbox contents (number | date | from | subject)\n\n\tUsage:\n\t\tlsmail /var/mail/mboxfile\n\n";
    exit;
}

while(<>) {
    if (/^From / && $prevline =~ /^$/) { $active = 1; }
    if (/^$/) { $active = 0; }
    $prevline = $_;

    if ($active) {
        @F = split(/^.*?: /);
        $F[1]=~s/\a\s+|\s+\z//g;
        $a{$1}=$F[1] if /^(From|Date|Subject): /;
    }
    if (/From / or eof){
            next unless $n++; # hogy az elso From utan ne irjuk ki amikor meg nincs semmi
            ($a{From}) = $a{From}=~/\<(.*?)\>/ if ($a{From}=~/</);
            $a{Subject}=~s/\=\?.*?\?\w\?//eg;
            $a{Subject}=~s/=(\w\w)/chr(hex($1))/eg;
            utf8::decode($a{Subject});
            $a{Subject}=~s/\?\=|\=//g;
            printf("%3d | %-32.32s | %-30.30s | %.40s\n",$n-1,$a{Date},$a{From},$a{Subject});
    }

}