>> my @ids_ary = []; >> my @names_ary = []; >> my @age_ary = []; > > Why do you need an empty arrayref as the first element of these?
*** Really don't. Just habit from 20 years of C programming. I also pre-initialize scalars. Helps me read the stuff 6 months later. > > here's an alternative: > > sub iID(){0} sub iNAME(){1} sub iAGE(){2} > my @IdNameAge_pary = ( [],[],[] ); > while (my ($id,$name,$age) = @{$sth->fetch}){ > push @{$IdNameAge[iID]},$id; > push @{$IdNameAge[iNAME]},$name; > push @{$IdNameAge[iAGE]},$age; > }; Perl is wonderful. There are so many ways to do things. You are clearly a more experienced and knowlegeable perl programmer than I. I would not be able to read this 6 months later. > ... > > > but seriously, loading everything into a temporary array just uses a > lot of memory and makes the code larger, so I avoid it when I can. > DBI's facility for providing a hashrefs for every result row makes it > easy to use names not numbers, *** This is what I use. In fact, in 2 years of writing my own app, I have never used fetchrow_array once! Only fetchrow_hashref(). But the original poster wasn't asking about that. Perl's motto: "There's More Than One Way To Do It" Jerry's one-man-project motto: "You Don't Have To Learn The Other Way". - Jerry Kaidor