in reply to Pushing at Array of Arrays

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.