use strict; user warnings; use info; use Data::Dumper; ... foreach my $in (@{$data{$key}}) { push @data , { name => $in{$key}[0]{ name }, add => $in{$key}[0]{ add }, street => $in{$key}[0]{ street }, city => $in{$key}[0]{ city }, zip => $in{$key}[0]{ zip }, state => $in{$key}[0]{ state }, }; } ... # Call info.pm and send data. info::test(\@data); ... # End data.pl file ... # file info.pm ... package info; use strict; use warnings; use Data::Dumper; ... sub test{ my ($test_data) = @_; print Dumper $test_data->{name}; } 1;