The existing $data is a reference to an array containing an array hashes, and the data you are adding are arrays being added to the top-level array. This is why your data structure looks odd (see below).
Data, as presented:
$data = \[ [ 'City Name', 'Last Name', 'First Name', 'Address' ], [ '', '', '', '' ], [ { 'FIRST_NAME' => 'John', 'CITY' => 'San Frans', 'LAST_NAME' => 'Doe', 'ADDRESS' => '100 Main St.' } ] ];
If you change the assignment in _test to the form my @data = ( ... );, I believe it will appear more as you expect. (It does, however, mean that the elements of the array differ in type.)
Data, after suggested change:
$data = \[ [ 'City Name', 'Last Name', 'First Name', 'Address' ], [ '', '', '', '' ], { 'FIRST_NAME' => 'John', 'CITY' => 'San Frans', 'LAST_NAME' => 'Doe', 'ADDRESS' => '100 Main St.' } ];
Hope that helps.
Update: 2014-12-02
Based on that premise, then, changing the unshift() line in your code to unshift @{ $data }[0], @{ $header_row }; appears to have your desired effect (see below).
Data, after change suggestion 2:
$data = \[ [ [ 'City Name', 'Last Name', 'First Name', 'Address' ], [ '', '', '', '' ], { 'FIRST_NAME' => 'John', 'CITY' => 'San Frans', 'LAST_NAME' => 'Doe', 'ADDRESS' => '100 Main St.' } ] ];
In reply to Re: Adding rows of data
by atcroft
in thread Adding rows of data
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |