[Melbourne-pm] fetchrow_array() vs fetchrow_arrayref() WAS RE: Perl DBI reference recommendations

Craig Sanders cas at taz.net.au
Thu Jul 16 23:45:18 PDT 2009

On Fri, Jul 17, 2009 at 11:47:34AM +1000, Leigh Sharpe wrote:
> Sam's example earlier used this:
> >while (my $row = $sth->fetchrow_arrayref) {
> >  my ($foo, $bar) = @$row;
> >  print "$foo  $bar\n";
> >}
> Is there any advantage to using fetchrow_arrayref() here, instead of:
> while (my ($foo, $bar) = $sth->fetchrow_array()) {
>   print "$foo  $bar\n";
> }
> The latter just 'feels' more intuitive to me, but am I missing something
> here which makes a reference more applicable?

i tend to use fetchrow_hashref() or fetchall_hashref() - that way i can
use the sql column names to access the data and don't have to guess
which array element matches which field....and, more importantly, don't
have to renumber things when i add or remove a field to the select.

oh, and arrayref/hashref are almost certainly faster than the non-ref
versions, and use less memory - they return only a reference to the data
rather than the a copy of the entire data structure.


craig sanders <cas at taz.net.au>

More information about the Melbourne-pm mailing list