in reply to passing multiple hashes to a subroutine

Avoid prototypes unless you really need to use them; they're not like argument/parameter lists in other languages (frankly I think your use here will confuse anyone reading your code!).

Instead, just pass references to the hashes. Thus:

sub count_orientation { my $ref = shift; my %x = %{(shift)}; # this is still correct! my $y = %{(shift)}; # ... } count_orientation($x, \%error_start, \%score); # or: count_orientation($x, {%error_start}, {%score});