my $cnt_unique=0; for my $row (1 .. $row_max) { ... row prep stuff for my $col (1 .. $col_max) { ... col prep stuff ... my $hr = ... your hash for the cell ... # Add unique number: $hr->{KEY} = $cnt_unique++; # Add row & column: $hr->{ROW} = $row; $hr->{COL} = $col; } }