malte: parsen mithilfe von ".."

Hallo,
versuche gerade aus einer logdatei bestimmte teile heraus zu extrahieren...

ich möchte z.b. alles zwischen "virtual_server" und "}\s}" aus einem string ($string) haben.

habe jetzt von diesem ".." operator gehört und versucht ihn laut perl cockbook anzuwenden:

while ($string) {
    if (/virtual_server/ .. /}\s}/) {
        #wie drucke ich jetzt die zu extrhierenden zeichen aus??
    }
}

hätte jetzt gerne sowas wie "print ..;" weil ich ja das haben möchte, was anstatt des .. steht!

wie komm ich da "ran"?
danke
malte

  1. Tag malte.

    versuche gerade aus einer logdatei bestimmte teile heraus zu extrahieren...
    ich möchte z.b. alles zwischen "virtual_server" und "}\s}" aus einem string ($string) haben.

    Zeilenübergreifend?

    habe jetzt von diesem ".." operator gehört

    Das Ding heißt Range-Operator.

    [...] cockbook [...]

    Jesses, das ist ja hahnebüchend ;-))

    while ($string) {
        if (/virtual_server/ .. /}\s}/) {
            #wie drucke ich jetzt die zu extrhierenden zeichen aus??
        }
    }

    Entweder über $_ oder indem du in der IF-Anweisung eine Kontrollvariable anlegst. Übrigens, willst du die Zeichenklasse \s nutzen oder steht das da im Klartext? Letztenfalls müsstest du m.E. den Backslash noch maskieren. Vom Prinzip jedenfalls müsste es so funktionieren:

    while ($string) {  
      if (/virtual_server/ .. /}\s}/) {  
        $erg .= $_;  
      }  
    }  
    print $erg;
    

    Siechfred