s#((\d+)-(\d+)-(\d+))#isDate($2,$3,$4) ? "$1" : $1#e; sub isDate { my($d,$m,$y) = @_; # ... return 1 if these are a valid date, else 0 }