[perl] matching prob

Pagina: 1
Acties:

  • MeneerKrab
  • Registratie: Augustus 2000
  • Laatst online: 29-06 07:05
Ik heb een probleem.

ik heb een array data1 die wordt. Uit dit array moet ik weer gegevens lezen om die vervolgens weer te verdelen in een array data2. Alleen dit moet niet gebeuren als er in data1[1] het woord NOQUEUE voorkomt. Dan moet hij weer verder gaan met het volgende regel.

Nu is mijn vraag hoe?

volgende heb ik al if ($data1[1] !~ m/NOQUEUE/) {
maar dat is niet goed.

oja ik ben een newbie op perl gebied.

Verwijderd

PowerCow: Ik heb een array data1. Uit dit array moet ik weer gegevens lezen om die vervolgens weer te verdelen in een array data2. Alleen dit moet niet gebeuren als er in data1[1] het woord NOQUEUE voorkomt. Dan moet hij weer verder gaan met het volgende regel.
Leg je probleem even iets beter uit, dan wordt het antwoord ook wat beter. :)

  • MeneerKrab
  • Registratie: Augustus 2000
  • Laatst online: 29-06 07:05
sorry ik ben niet goed in uitleggen.

Wat er dus moet gebeuren is het volgende.
- komt een if of while statement.
- hij begint met de statement als het woord NOQUEUE niet voorkomt in data1[1].
- komt het woord NOQUEUE voor in data1[1] dan moet hij stoppen met de statement.

nu moet data1[1] gematcht worden op het woord NOQUEUE.

hoe doe ik dit?

Verwijderd

PowerCow: Sorry ik ben niet goed in uitleggen.
<offence>
<no>
:D Ik ziet het.
</no>
</offence>

Okay, ik zal je vertellen wat ik er van begrijp:
Je hebt een array @data1 (hoe kom je aan de waarden van het array?).
Als er in $data1[1] niet NOQUEUE voorkomt moeten er waarden uit @data1 in @data2 gezet worden.
Vervolgens moet het script verder gaan met de volgende regel (van het bestand? of bedoel je het volgende element van het array @data1?)

  • MeneerKrab
  • Registratie: Augustus 2000
  • Laatst online: 29-06 07:05
hij moet dus alleen maar matchen op een string NOQUEUE. als die niet voorkomt moet hij verder gaan met het lezen uit een logbestand.

Verwijderd

PowerCow: Hij moet dus alleen maar matchen op een string NOQUEUE. als die niet voorkomt moet hij verder gaan met het lezen uit een logbestand.
Ahh.... Okay. :)

Je opent het bestand en leest per regel uit:
code:
1
2
3
4
open(LOG, "/hier/staat/mijn/log") or die $!;
while (<LOG>) {
    # doet iets met de regel
}

Nou is de vraag wat er met die regel moet gebeuren...? (Plak anders even code die je al hebt.)

Om te verdelen als $iets niet NOQUEUE bevat kan je dit gebruiken (dat had je al bedacht):
code:
1
2
3
if ($iets !~ /NOQUEUE/) {
    # verdeel
}

Plak anders een stukje uit die logfile en een je script zover, dan snap ik ook wat ik aan het doen ben. ;)

  • MeneerKrab
  • Registratie: Augustus 2000
  • Laatst online: 29-06 07:05
het werkt.
met het bovenstaande.

Wat er dus gebeuren moet is:
schrijf een script dat een maillog uitleest,
-bestand openen
-return weghalen aan het eind van de regel (chop)
-regel splitsen op ": " (@data1)
-rechterwaarde array ($data1[2]) splitsen op ", "
array doorlopen met foreach en waarden matchen uit sendmail boek.
-die waarden weer opsplitsen op "=" in 3e array
waarden onder elkaar wegschrijven in bestand.

nu kan ik er een database van bouwen en een htmlpagina schrijven.

Verwijderd

PowerCow: Het werkt.
Mooi. :)
Wat er dus gebeuren moet is: [verhaal]
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/usr/bin/perl -w

use strict;
open(LOG, "/hier/staat/mijn/log") or die $!;
while (<LOG>) {
    chop;
    my ($veld, $waarde) = split /: /;
    foreach (split /, /, $waarde) {
      # matchen van $_
      foreach (split /=/) {
        # printen
      }
    }
}
close(LOG) or die $!;

Zoiets? (Ja, ik verveelde me :))

Waar gebruik je het voor en mogen wij het meesteerwerk ook zien? ;)

Verwijderd

Ehmm... * Koffie |:(

  • MeneerKrab
  • Registratie: Augustus 2000
  • Laatst online: 29-06 07:05
ik help vanaf maandag de afdeling scripting en hosting .
hiervoor moet ik perl en php gaan leren. Dit is een oefening.


wat ik dus doe is dus gewoon een maillog uitlezen,
to, from, protocol, tijd, datum, mail id leest het programma uit.

Hiervan moet dan weer een html pagina gemaakt worden om te kijken wie het meeste mailt, de groote van de bestanden, enz enz.

en dat is dus voor de mailserver bij ons op het werk 5000+ mailtjes per dag.

  • MeneerKrab
  • Registratie: Augustus 2000
  • Laatst online: 29-06 07:05
Op donderdag 25 oktober 2001 12:54 schreef Arien het volgende:

[..]

Mooi. :)
[..]

foreach (split /, /, $waarde) {
# matchen van $_
foreach (split /=/) {
# printen
}
}
}
close(LOG) or die $!;[/code]
vanaf het matchen van $_ doet hij dus 10 if statements.
omdat er in elke regel 10 verschillende dingen staan me een =.

deze zet hij dan allemaal op een rijtje.


wat hij maakt mag ik niet laten zien ivm persoonlijke gegevens.

Het werkt allemaal, die kerel vond het goed.
Pagina: 1