perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 21
Click for quality!




10.02.2012 / 20:47

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


BeitragBestimmten Teil aus einer Datei auslesen
Seitenanfang
Hi,

Ich habe eine Datei (access.log) und lese diese mit Perl aus. Danach steht das ausgelesene in @lines.

In der Datei (access.log) steht folgendes:

127.0.0.1 - - [26/Sep/2005:19:15:10 +0200] "GET /cgi-bin/loggy.cgi?___conf___+FRANK MILLER+MUELLNER HTTP/1.1" 404 1122 "-" "Mozilla/3.0 (compatible; Indy Library)"
127.0.0.1 - - [26/Sep/2005:19:15:20 +0200] "GET /cgi-bin/loggy.cgi?___conf___+FRANK MILLER+MUELLNER HTTP/1.1" 404 1122 "-" "Mozilla/3.0 (compatible; Indy Library)"
127.0.0.1 - - [26/Sep/2005:19:15:31 +0200] "GET /cgi-bin/loggy.cgi?___conf___+KARL HUBER+HUBER HTTP/1.1" 404 1122 "-" "Mozilla/3.0 (compatible; Indy Library)"
127.0.0.1 - - [26/Sep/2005:19:15:41 +0200] "GET /cgi-bin/loggy.cgi?___conf___+HANS MAIER+COMPUTER HTTP/1.1" 404 1122 "-" "Mozilla/3.0 (compatible; Indy Library)"

Nun möchte ich aus @lines immer den Text nach dem Plus herauslesen. Also z.B. FRANK MILLER und MUELLNER

wie mache ich das am besten unter Perl?
Im Moment hab ich folgendes Script, dabei gibt er aber immer nur "," aus:

#!/usr/local/bin/perl

$file = '/Programme/xampp/apache/logs/access.log';
open(INFO, "<$file" || "Datei nicht gefunden\n");
lines = <INFO>;
close(INFO);
while (@lines)
{
m/___\+(.*)\+(.*)?HTTP/;
print "$1, $2";
}

vielen dank im vorhinein
mfg muene

Datum: 21.10.2005-08:48

Beitragre: Bestimmten Teil aus einer Datei auslesen
Seitenanfang
Hi,
am Besten gleich dran gewöhnen immer oben in der shebang Zeile das -w zu benutzen (warnings einschalten), dann auch "use strict;" benutzen und alle Variablen mit my initialisieren.
Das hilft ungemein, Fehler zu finden.


#!/usr/bin/perl -w

use strict;
my $file = '/Programme/xampp/apache/logs/access.log';

open(INFO, "<$file" || die "Datei nicht gefunden\n"); # die fehlt
my @lines = <DATA>; # hier fehlte das '@'
close(INFO);

for (@lines) # for, nicht while
{
m/___\+(.*)\+(.*)?HTTP/;
print "$1, $2\n";
}


Gruss,
svenXY

Datum: 21.10.2005-10:46

Beitragre: Bestimmten Teil aus einer Datei auslesen
Seitenanfang
Ich kenne mich mit access.logs nicht aus. In dem Beispiel standen immer nur drei. Falls da aber unterschiedlich viele Namen stehen können, dann würde ich das so machen:
einmal hinter dem ersten + herausziehen und was dann gematched hat nochmal spliten:

@namen = split '+', $match;

Datum: 24.10.2005-09:08

-






-
-