Cheatah: Reguläre Ausdrücke in Variabeln

Beitrag lesen

Hi,

$ok = ($timedate =~ /^($FORM{'day'}/$FORM{'month'}/$FORM{'year'})/o);
So werden nun die an das Skript übergebenen Parameter in den Ausdruck eingefügt und ausgewertet. Funktioniert auch, SOFERN ein Wert übergeben wurde.

Möglich wäre z.B. daß der Tag nicht eingegeben wurde, weil ich die Filterung der Daten auf den Moant erweitern möchte. Nun habe ich mir folgendes überlegt.

versuch's mit
... =~ /^(($FORM{'day'}\d\d)/...

if ($FORM{'day'})
  {
  $parday = $FORM{'day'};
  }
else
  {
  $parday = "\d\d";
  }

$parday = $FORM{'day'} "\d\d";

$ok = ($timedate =~ /^($parday/$parmonth/$paryear)/o);

Das funktioniert aber nicht, weil ja die Zeichenfolgen \d\d als String in die Parameter eingeügt werden.

Doch, die Variable wird geparsed. Ansonsten verwende ein eval()-Konstrukt, so daß die Variablen garantiert vorher aufgeschlüsselt werden.

Und nebenbei, was bedeutet das o am Ende des Ausdrucks? g, i und s kenne ich schon aber das ist für mich neu.

"Compile once", dadurch werden die Variablen nur einmal zur Laufzeit ersetzt (z.B. innerhalb von while). Laß es einfach weg. Ich benutze es auch nicht und weiß daher nicht, wie es reagiert; wenn man davon liest wird auch meistens empfohlen die Option nur zu verwenden, wenn man weiß, welche Auswirkungen das hat.

Cheatah