{ my ($t,$c); sub unique_timestamp { my $time = time; $c++; $c = 0 unless $time == $t; $t = $time; my ($s,$m,$h,$D,$M,$Y) = (localtime($time))[0..5]; sprintf "%04d%02d%02d%02d%02d%02d%03d", $Y+1900, $M+1, $D, $h, $m, $s, $c; } } # To see that work... for (1..100) { print unique_timestamp, "\n"; sleep rand 2; }