🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.perl
Article #52097

Re: problem logiczny ze skryptem

#52097
From: Kacper Perschke
Date: Mon, 06 Dec 2010 22:11
90 lines
3598 bytes
Dnia 05.12.2010 gregor <gregor@szu.pl> napisał:
> OK jakos tam sobie poradzilem jak na moje umiejetenosci moze sie komusc
> przyda chodzi przyzwoicie i ladnie zczytuje logi z postfixa

Brawo!

Jednka podobnie jak koledzy bym go dość mocno przerobił. Co ty na propozycję
wspólnego przerobienia? Jednak wtedy wolałbym zobaczyś kawałek takiego logu
i jeszcza raz usłyszeć algorytm nie w perlu tylko słowami w języku polskim.

- Na przykład - początek
Poniżej warunek '$skrzynki{$1} && $sprawdz eq $1' jest równoważny '$sprawdz eq $1'.
foreach my $sprawdz ( keys %skrzynki ) {
  if (/regexp/) {
    if( $skrzynki{$1} && $sprawdz eq $1 ){
    }
  }
}
- Na przykład - koniec

Postarałem się trochę go uładzić, ale mi się nie podoba co wyszło. Ja dalej w
tym nie widzę idei. Gdybym dostał taki kod po kimś to bym klął autora na czym
świat stoi. Koszt wejścia to minimum ze 45 minut.

- Kod - początek
#!/usr/bin/perl

my @office_emails = ( 'biuro@xxx.pl', 'marketing@xxx.pl', );
my $working_dir   = '/usr/skrypty/maillog/boborowa/logi';
my $logs          = read_logs();

foreach my $checked_email (@office_emails) {

    open ZAPISZ, "+>>$working_dir/wynik/$checked_email";

    for my $log_content (@$logs) {

        my %Q    = ();
        my %line = ();

        for my $log_line (@$log_content) {
            if ( $log_line =~
                 m/([\w\.-]*[a-zA-Z0-9_]@[\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z])/
              )
            {
                my $suspected_email = $1;
                if ( $suspected_email eq $checked_email ) {
                    $Q{$suspected_email} = 1
                      if (/([0-9A-Z]{10})/);
                    $line{$log_line} = $suspected_email
                      if (/([0-9:]{3}[0-9:]{3}[0-9]{2})/);
                }
            }
        }

        foreach my $id ( keys %Q ) {
            foreach my $sthg_terefere ( grep ( /$id/, @$log_content ) ) {
                print $id; # Debugging ???
                if ( $sthg_terefere =~ m/([0-9:]{3}[0-9:]{3}[0-9]{2})/ ) {
                    $line{$id} = $1;
                }
            }
        }

        foreach my $line ( sort keys %line ) {
            print ZAPISZ $line;
        }

    }

    close ZAPISZ;
}

sub read_logs () {
    my $logs = [];
    for ( my $log_no = 309 ; $log_no >= 31 ; $log_no-- ) {
        my $log_file_name = "$working_dir/maillog.$log_no";
        open( LOG_FILE, $log_file_name );
        my @log_file_content = <LOG_FILE>
          or die "Syplem sie na czytaniu logu $log_file_name";
        close(LOG_FILE);
        push @$logs \@log_file_content;
    }
    return $logs;
}
- Kod - koniec

KAcper
-- 
Mail => www.rot13.com
Technical Details
Message-ID: <slrnifqns1.2ou.zbp.yvnzt@sztywniak.nawsiegda>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!not-for-mail
References: <idbb3m$dpe$1@inews.gazeta.pl> <idghvm$7d6$1@inews.gazeta.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!not-for-mail
From: Kacper Perschke <zbp.yvnzt@rxupferc.ercpnx>
Newsgroups: pl.comp.lang.perl
Subject: Re: problem logiczny ze skryptem
Date: Mon, 6 Dec 2010 22:11:14 +0000 (UTC)
Organization: Dzial Sieciowy ICM, Uniwersytet Warszawski
Lines: 90
Message-ID: <slrnifqns1.2ou.zbp.yvnzt@sztywniak.nawsiegda>
References: <idbb3m$dpe$1@inews.gazeta.pl> <idghvm$7d6$1@inews.gazeta.pl>
NNTP-Posting-Host: 89-72-187-112.dynamic.chello.pl
Mime-Version: 1.0
X-Trace: news.net.icm.edu.pl 1291673474 16593 89.72.187.112 (6 Dec 2010 22:11:14 GMT)
X-Complaints-To: usenet@news.net.icm.edu.pl
NNTP-Posting-Date: Mon, 6 Dec 2010 22:11:14 +0000 (UTC)
User-Agent: slrn/pre1.0.0-18 (Linux)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit