Beat: Frage zu Regex - Datum

Beitrag lesen

my ( $tag )     = ( $datum =~ /(\d\d).\d\d.\d\d\d\d/ );

my ( $monat )   = ( $datum =~ /(?:\d\d.)?(\d\d).\d\d\d\d/ );
my ( $jahr )    = ( $datum =~ /(?:\d\d.)
?(?:\d\d.)*?(\d\d\d\d)/ );

Nun habe ich versucht, die drei zusammenzufassen. Das klappt aber nicht:
my ( $tag, $monat, $jahr )    = ( $datum =~ /(?:(\d\d).)?(?:(\d\d).)?(\d\d\d\d)/ );

  
kaputter Code  
  

> Einen Stringteil kann ich mit (?:xyz) gruppieren und mittels angehängtem \*? im Falle des Nichtvorhandenseins ignorieren. Ist es möglich, innerhalb eines regulären Ausdrucks auch Variablen nur optional zu matchen?  
  
()? setzt $1, unabhängig davon, ob der Part vorhanden war.  
  
  
~~~perl
m/  
  (?:  
   (?:  
     (\d\d)\.    # tag  
   )?  
     (\d\d)\.    # monat  
  )?  
     (\d\d\d\d)  # yahr  
/x and ($day, $mon, $year) = ( $1||'', $2||'', $3 );  

mfg Beat

--
><o(((°>           ><o(((°>
   <°)))o><                     ><o(((°>o
Der Valigator leibt diese Fische