my $rows = [ { 'column number 4' => 'data row 1, col 4', 'column number 2' => 'data row 1, col 2', 'column number 5' => 'data row 1, col 5', }, { 'column number 4' => 'data row 2, col 4', 'column number 5' => 'data row 2, col 5', 'column number 2' => 'data row 2, col 2', } ]; #### my %rownames; $rownames{$_} = $_ for sort keys %{@{$rows}[0]}; unshift @$rows, \%rownames; #### [ { 'column number 2' => 'column number 2', 'column number 5' => 'column number 5', 'column number 4' => 'column number 4' }, # ...