my $rows = [ map { my $row = $_; ($results > 0) ? { ODD => [ map { {VALUE => $_} } @{$row} ] } : { EVEN => [ map { {VALUE => $_} } @{$row} ] } } @{$data} ]; #### (++$i % 2) #### ($results > 0) #### use Data::Dumper; { my $data = [[0,1,2,3,4,5], [1,2,3,4,5,6], [2,3,4,5,6,7], [3,4,5,6,7,8], [4,5,6,7,8,9], [5,6,7,8,9,10]]; my $i = 0; my $rows = [ map { my $row = $_; (++ $i % 2) ? { ODD => [ map { {VALUE => $_} } @{$row} ] } : { EVEN => [ map { {VALUE => $_} } @{$row} ] } } @{$data} ]; print Dumper($rows); } { my $data = [[0,1,2,3,4,5], [1,2,3,4,5,-6], [2,3,4,5,6,7], [3,4,5,6,7,8], [4,5,6,7,8,9], [5,6,7,8,9,10]]; my $rows = [ map { my $row = $_; (@{$row}[5]>= 0) ? { ODD => [ map { {VALUE => $_} } @{$row} ] } : { EVEN => [ map { {VALUE => $_} } @{$row} ] } } @{$data} ]; print Dumper($rows); } #### $VAR1 = [ { 'ODD' => [ { 'VALUE' => 0 }, { 'VALUE' => 1 }, { 'VALUE' => 2 }, { 'VALUE' => 3 }, { 'VALUE' => 4 }, { 'VALUE' => 5 } ] }, { 'EVEN' => [ { 'VALUE' => 1 }, { 'VALUE' => 2 }, { 'VALUE' => 3 }, { 'VALUE' => 4 }, { 'VALUE' => 5 }, { 'VALUE' => 6 } ] }, { 'ODD' => [ { 'VALUE' => 2 }, { 'VALUE' => 3 }, { 'VALUE' => 4 }, { 'VALUE' => 5 }, { 'VALUE' => 6 }, { 'VALUE' => 7 } ] }, { 'EVEN' => [ { 'VALUE' => 3 }, { 'VALUE' => 4 }, { 'VALUE' => 5 }, { 'VALUE' => 6 }, { 'VALUE' => 7 }, { 'VALUE' => 8 } ] }, { 'ODD' => [ { 'VALUE' => 4 }, { 'VALUE' => 5 }, { 'VALUE' => 6 }, { 'VALUE' => 7 }, { 'VALUE' => 8 }, { 'VALUE' => 9 } ] }, { 'EVEN' => [ { 'VALUE' => 5 }, { 'VALUE' => 6 }, { 'VALUE' => 7 }, { 'VALUE' => 8 }, { 'VALUE' => 9 }, { 'VALUE' => 10 } ] } ]; $VAR1 = [ { 'ODD' => [ { 'VALUE' => 0 }, { 'VALUE' => 1 }, { 'VALUE' => 2 }, { 'VALUE' => 3 }, { 'VALUE' => 4 }, { 'VALUE' => 5 } ] }, { 'EVEN' => [ { 'VALUE' => 1 }, { 'VALUE' => 2 }, { 'VALUE' => 3 }, { 'VALUE' => 4 }, { 'VALUE' => 5 }, { 'VALUE' => -6 } ] }, { 'ODD' => [ { 'VALUE' => 2 }, { 'VALUE' => 3 }, { 'VALUE' => 4 }, { 'VALUE' => 5 }, { 'VALUE' => 6 }, { 'VALUE' => 7 } ] }, { 'ODD' => [ { 'VALUE' => 3 }, { 'VALUE' => 4 }, { 'VALUE' => 5 }, { 'VALUE' => 6 }, { 'VALUE' => 7 }, { 'VALUE' => 8 } ] }, { 'ODD' => [ { 'VALUE' => 4 }, { 'VALUE' => 5 }, { 'VALUE' => 6 }, { 'VALUE' => 7 }, { 'VALUE' => 8 }, { 'VALUE' => 9 } ] }, { 'ODD' => [ { 'VALUE' => 5 }, { 'VALUE' => 6 }, { 'VALUE' => 7 }, { 'VALUE' => 8 }, { 'VALUE' => 9 }, { 'VALUE' => 10 } ] } ];