use strict; my @tablenums = ('1', '2', '3'); my (@johnData, @mikeData, @harryData); my %tables = ( '1' => { name => "john", data=>\@johnData }, '2' => { name => "mike", data=>\@mikeData }, '3' => { name => "harry", data=>\@harryData }, ); foreach (@tablenums) { push @{$tables{$_}->{data}}, "any", "data", "goes", "here"; } print "john`s data is @johnData!"; #prints "john`s data is any data goes here!"