use strict; use warnings; use Data::Dumper; my @tablenums = ('1', '2', '3'); our (@johnData, @mikeData, @harryData); my @any = ("any", "data", "goes", "here"); my %Tables = ( '1' => "john", '2' => "mike", '3' => "harry", ); foreach (@tablenums){ no strict 'refs'; push @{"$Tables{$_}Data"}, @any; } print Dumper(\(@johnData, @mikeData, @harryData));