http://www.perlmonks.org?node_id=926229


in reply to $dbh->selectall_arrayref to simple @array

I was puzzling over that today. The issue is that selectall_arra­yref gives you back a reference to an array of arrays, where each row from the query result is put into an array, and references to each of those arrays are put into a higher level array. A reference to that top level array is returned. All this is usefull if you are querying for several collums in each row, but is a useless level of indirection if you are only querying for one.

The solution I used was to make use of the map function to flatten the data structure. I hope it does not look to much like code golf!

my @query_results = map { $_->[0] } @{ $sth->fetchall_arrayref() };