Since you mentioned that the output is what you want what you want your code to look like is:
#!/usr/bin/perl -w
use strict;
use warnings;
use diagnostics;
my @data = [
'17-02-2005','18-02-2005','19-02-2005',
'20-02-2005','21-02-2005','22-02-2005',
'23-02-2005','24-02-2005'
];
my %labels = (
'C' => [0,0,0,0,7,0,0,2],
'A' => [0,0,0,0,0,0,5,4],
'B' => [0,0,0,0,0,0,0,0]
);
foreach my $item (sort {$a cmp $b} keys %labels) {
# replaced
#push @{$data[$item]}, $labels{$item};
# with
push @{$data[0]}, $labels{$item};
}
use Data::Dumper;
print Dumper @data;
The problem is that in the push you are using
$data[$item] in which case
$item (being the hash keys 'A','B','C') not being a numeric are being converted to 0 (and hence pushing things onto the first array in your AoA (
@data) and a warning is thrown. Which is why I replaced
$item with zero in the code above.
-enlil