#!perl use strict; use warnings; use Data::Dumper; my %input; $input{12}[0] = "01-01-1989,ABC,12,12000,300000,Finanance,BC"; $input{12}[1] = "January,60000"; my @values; my $table; ## add a table row counter my $row=0; ## define the data array my @data=(); foreach my $k (sort {$b <=> $a} keys %input) { foreach (@{$input{$k}}) { chomp(); ##change this to use $row ##push( @{@data[$.]},( split /[,\n]/, $_)); push( @{$data[$row]},( split /[,\n]/, $_)); } # increment row for each key ++$row; } print "After\n"; print Dumper(\@data); ## add my $body = ""; for my $i ( 0 .. $#data ) { $body .= ""; ## change this slightly ##for ( @{@data[$i]}){ for ( @{$data[$i]}){ $body .= "\r\n"; } $body .= ""; } $body .= "
$_
"; ## result print $body;