my (%baz, @bar) = foo(); #### my (%baz, @bar) = sub { %{$_[0]}, @{$_[1]} }->(foo()); #### use Data::Dumper; sub foo { return ({J=>'A', P=>'H', }, [4.019,5.8]); } # ... original listy assignment here ... print Dumper(\%baz); #### my ($baz, $bar) = foo(); print "$baz->{J} $bar->[1]\n";