use strict; use warnings; use Time::HiRes qw( gettimeofday ); use Data::Dumper; # Test data my @record_time = qw( 12 23 34 45 56 67 78 89 90 ); # Current time to the microsecond my ($sec, $usec) = gettimeofday; my $last_time = "$sec.$usec"; my %each_record = ( ); foreach my $element(@record_time) { my $this_time = $last_time; while ($this_time eq $last_time) { # Always true the first time ($sec, $usec) = gettimeofday; # Get new current time until $this_time = "$sec.$usec"; # it's different from last } $each_record{$this_time} = $element; # Unique key $last_time = $this_time; # Reset the last time } # Verify the results printf "Results => %s\n", Dumper(\%each_record);