my %error_per_file;
my %error_type;
while(my ($filename, $errnum) = get_row_elements($some,$params,$here)) {
$error_type{$errnum}++;
$error_per_file{$filename}->{$errnum}++;
}
####
my $column = 1;
my %column_for = map ($_ => $column++), sort keys %error_type;
$column_for{Filename} = 0;
####
$worksheet->write(0, $column_for{$col_name}, $col_name) for keys %column_for;
####
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;
}