my $row = 1; for my $filename (sort keys %error_per_file){ $worksheet->write($row, 0, $filename) my ($errnum, $occurences); $worksheet->write($row, $column_for{$errnum}, $occurences) while ($errnum, $occurences) = each %{$error_per_file{$filename}}; ++$row; }