Markus: Perl - Regulärer Ausdruck

Hallo,

ich habe einen regulären Ausdruck in meinem Programm für die Analyse von Log Files :

(/(^Thread)\s(.*)\s(\d{2}).(\d{2}).(\d{4}) (\d{2}):(\d{2}),(\d{2}) (Start): ([A-Za-z]{1,40}) (AA):(\d{3,5})  (SGNR):(\d{2}) (.*)$/))

$12, also der Wert nach (AA): kann 3 oder 5 stellig sein,
wenn er 5 stellig ist, sollen die letzten 2 Stellen abgeschnitten werden, wenn der Wert 3 stellig ist, soll der Wert so bleiben.

Mit welchem Befehl schneide ich die letzten 2 Stellen ab? Mir fällt absolut nichts ein.

Beispiel aus 98856 soll 988 werden
921 bleibt 921 !

Die Zahlen sind gleichzeitig die Indexplätze der Liste in denen sich Hashes befinden, und so mit für die Ausgabe relevant.

"Grundlagen Perl" steht auch nichts drin ; (, ich hoffe ihr könnt mir weiterhelfen. Ich weiß nicht warum mir so eine Kleinigkeit nicht einfällt.

  1. Moin, moin!

    Wie wäre es mit dieser (ungetesteten) Lösung?
    (/(^Thread)\s(.*)\s(\d{2}).(\d{2}).(\d{4}) (\d{2}):(\d{2}),(\d{2}) (Start): ([A-Za-z]{1,40}) (AA):(\d{3})\d*  (SGNR):(\d{2}) (.*)$/))

    Die ersten 3 Ziffern der angesprochenen Zahl stehen dann in $12, weitere (egal wie viele) werden ignoriert.

    Alles klar?

    Norbert

    1. Moin, moin!

      Wie wäre es mit dieser (ungetesteten) Lösung?
      (/(^Thread)\s(.*)\s(\d{2}).(\d{2}).(\d{4}) (\d{2}):(\d{2}),(\d{2}) (Start): ([A-Za-z]{1,40}) (AA):(\d{3})\d*  (SGNR):(\d{2}) (.*)$/))

      Die ersten 3 Ziffern der angesprochenen Zahl stehen dann in $12, weitere (egal wie viele) werden ignoriert.

      Alles klar?

      Norbert

      Hmmm danke^*strahl* funktioniert soweit jetzt nur noch an der 40 Millionen Zeilen LogFile probieren LOL, ich meld mich mal in 2 Stunden wieder ; )