use DateTime; use strict; use warnings; my $str = '2003/11/12'; my( $y, $m, $d ) = qw[ 2003 11 12 ]; # this part magic, use split $d = DateTime->new( year => $y, month => $m, day => $d); warn $d->ymd; $d->add(days => 6); die $d->ymd; __END__ 2003-11-12 at C:\dev\loose\datetime3.pl line 7. 2003-11-18 at C:\dev\loose\datetime3.pl line 9.