Check
perlreftut; your primary mistakes are:
- Not sending %list by reference: change(\%list);
- shift()ing @_ and expecting an aggregate back; instead, use: my $href = shift @_;
Once you have $href, you use %$href wherever you used %A.
foreach (keys %$href) {
print "$_ = $href->{$_}\n"; # or $$href{$_}
...
}