my %x=(a=>1,b=>2,c=>3); my @y=(1,2,3); sub func { my $ref_hash_x=shift(@_); my $ref_array_y=shift(@_); my %hash_x=%{$ref_hash_x}; my @array_y=@{$ref_array_y}; my @ret_a=(1,2,3); my %ret_b=('a',1,'b',2,'c',3); return(\@ret_a,\%ret_b); } my ($ref_array_ret_a,$ref_hash_ret_b)=func(\%x,\%y); my @array_ret_a=@$ref_array_ret_a; my %hash_ret_b=%$ref_hash_ret_b;