@files = (); sub filer { $filepath_rs = $File::Find::name; if(-f $filepath_rs) { $metadata = {}; #should instantiate a new hash object and return a scalar reference. ${metadata}{'path'} = $filepath_rs; print ${metadata}{'path'}; #prints out fine push(@files, $metadata); #should add reference to hash to array. } } find(\&filer, $mydir); foreach(@files) { print ${$_}{'path'}; #nothing prints out }