#!/usr/bin/perl use strict; use warnings; use Data::Dumper; my @times = qw(1000 1000 1000 1010 1010 1010); my $hash = {}; my $seen = {}; for my $time (@times) { if ($seen->{$time}) { HACK: $time++; if ($seen->{$time}) { goto HACK } else { $seen->{$time}++ } } else { $seen->{$time}++ } $hash->{$time}->{one} = 1; $hash->{$time}->{two} = 2; } print Dumper $hash;