use strict; { my $lasttime; my $counter = 0; sub uniq_filename { my $time = time; if ($time == $lasttime) { $counter++; } else { $counter = 0; $lasttime = $time; } my @time = localtime($time); return sprintf ("%d%02d%02d%02d%02d%02d%03d", $time[5]+1900, $time[4]+1, $time[3], $time[2], $time[1], $time[0], $counter); } } for (1 .. 10) { print uniq_filename, "\n"; select undef, undef, undef, .25; } __OUTPUT__ 20020627092353000 20020627092354000 20020627092354001 20020627092354002 20020627092355000 20020627092355001 20020627092355002 20020627092355003 20020627092356000 20020627092356001