in reply to Array to Array of hashes

You're putting a number into $row on each iteration over data, and then not using it. It's more idiomatic to put each element of @data into $row, then work on that.

for my $row (@data){ push @aoh, { name => $row->[0], dob => $row->[1], addr => $row->[2], }; }

PS: Your @data array is corrupt. First, you're missing a closing double-quote, and further, you create an array and then immediately assign an array reference to it as it's first element. Please ensure that your data and code compile properly before posting it, unless of course that's the specific problem you don't understand. For an array, you use parens, like so: my @array = (1, 2, ...);