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
><o(((°> ><o(((°>
<°)))o>< ><o(((°>o
Der Valigator leibt diese Fische