my $field = "20011023083000"; my $d = qr /(\d\d)/; my ($year,$month,$day,$hour,$minutes,$seconds) = $field =~ m/(\d{4})$d$d$d$d$d/o; show(); ($year,$month,$day,$hour,$minutes,$seconds) = (localtime)[5,4,3,2,1,0]; $year += 1900; $month += 1; # dec = 12 not 11 show(); $string = sprintf "%4d%02d%02d%02d%02d%02d", $year,$month,$day,$hour,$minutes,$seconds; print "\n\$string $string\n"; sub show { print " \$year $year \$month $month \$day $day \$hour $hour \$minutes $minutes \$seconds $seconds "; }