my $scalar1 = 1; my $scalar2 = 2; ($scalar1,$scalar2) = my_subroutine(@array1,$scalar1,$scalar2); print "$scalar1 $scalar2 \n"; sub my_subroutine() { @array1 = @{shift()}; $scalar1 = shift(); $scalar2 = shift(); $scalar1 =+ 22; $scalar2 =+ 33; return ($scalar1,$scalar2); } #### my @array1 = (1,2); $arrayref = \array1; ($arrayref,$scalar1,$scalar2,$hashref) = my_sub(@array1,$scalar1,$scalar2); @array1 = @{$arrayref}; my %hash = %{$hashref}; print "$array[0]\n"; print "$hash{name}\n"; sub my_sub() { @array = @{shift()}; $s1 = shift(); $s2 = shift(); my %hash = {'name'=>'a', 'city'=>'b'}; $array[0] =3; $hash{name} = 'aaa'; return (\@array1,$scalar1,$scalar2,\%hash); }