in reply to How does DBI return an arrayref with key/value pairs?
I think you'll find the enlightenment you're after in perlreftut - Mark's very short tutorial about references.
When you called $rows = $dbh->selectall_arrayref, DBI returned a single scalar value which you assigned to $rows. That value was a reference to an array. Each element in that array was a reference to a hash of column names and values.
The array-dereferencing syntax you quoted:
$ { $array_ref } [2]is exactly equivalent to this syntax:
$array_ref->[2]And in your case would return a hashref.
my $hash_ref = $array_ref->[2]; my $value = $hashref->{$key};
You can also chain together the dereferencing like this:
my $value = $array_ref->[2]->{$key};
And you can even omit the arrow when the initial data structure contains references:
my $value = $array_ref->[2]{$key};
In Section
Seekers of Perl Wisdom