use POSIX 'mktime'; while(){ if(/^((\d{4})-(\d{2})-(\d{2})\s(\d{2}):(\d{2}):(\d{2}),(\d{3}))/){ $t2=mktime($7,$6,$5,$4-1,$3-1,$2-1900,0,0,0)*1000+$8-$t; if($t){print "$1 $t2\n";$t=0}else{$t=$t2} } } __DATA__ 2010-11-04 11:20:04,101 2010-11-04 11:23:10,110 2010-11-05 11:20:04,101 2010-11-05 11:23:10,102