in reply to Foreach in a 2D array

You need to dereference the array before iterating through it, otherwise you iterate over one element (the reference). That means you need to change $dataoptions{$columns[$i]} to @{$dataoptions{$columns[$i]}}.

Related documents:
perlref - Perl references and nested data structures
perlreftut - Mark's very short tutorial about references
perllol - Manipulating Arrays of Arrays in Perl
perldsc - Perl Data Structures Cookbook


See perltoc if you don't know which perldoc to read!
Read argumentation in its context!