while (@data = $sth1->fetchrow_array()) { for (my $field = 0; $field <= $#data ; $field++) { my $var_cnt = $field+1; #needed for cat in next line to work eval('push @field'.$var_cnt.', $data['.$field.'];'); } } #### { no strict 'refs'; while (@data = $sth1->fetchrow_array()) { for (my $field = 0; $field <= $#data ; $field++) { my $var_name = 'field' . ($field+1); push(@$var_name, $data[$field]); } } } #### my $pkg = \%::; $pkg = $pkg->{$_.'::'} foreach (split(/::/, __PACKAGE__)); while (@data = $sth1->fetchrow_array()) { for (my $field = 0; $field <= $#data ; $field++) { push(@{$pkg->{'field' . ($field+1)}}, $data[$field]); } }