Hansi: Reguläre Ausdrücke in Variabeln

Beitrag lesen

Hallo,

ich lese ein Datum aus und überprüfe dieses mit

$ok = ($timedate =~ /^(\d\d/\d\d/\d\d)/o);
ist die Formatierung gültig, dann ist &ok=1 wenn nicht dann ist $ok=0. In der obigen Syntax ist alles im grünen Bereich.

Tatsächlich werden natürlich Parameter noch eingefügt, um zu überprüfen ob $timedate mit dem übergebenen Datum übereinstimmt. Das sieht wie folgt aus:
$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.

Ich überprüfe die Parameter auf Werte und wenn kein Wert enhalten ist, dann übergebe ich eben die Patzhalter.

if ($FORM{'day'})
  {
  $parday = $FORM{'day'};
  }
else
  {
  $parday = "\d\d";
  }
if ($FORM{'month'})
  {
  $parmonth = $FORM{'month'};
  }
else
  {
  $parmonth = "\d\d";
  }
if ($FORM{'year'})
  {
  $paryear = $FORM{'year'};
  }
else
  {
  $paryear = "\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.

Und nun die Frage wie kann ich die Ausdrücke in Variabeln übergeben?
Und nebenbei, was bedeutet das o am Ende des Ausdrucks? g, i und s kenne ich schon aber das ist für mich neu.

Es wäre super, wenn sich jemand erbarmen würde und mir dabei helfen könnte.
Vielleicht hat auch jemand einen Tip, wie man die Sache noch optimieren kann.

Im voraus auf jeden Fall schon einmal Danke für euere Unterstützung.

Hansi