Hashes and arrays are the same in array context. Try print join(", ", @_);at the beginning of your sub to see the effect.
I suggest passing references instead of hashes:
sub count_orientation {
my $ref = shift;
my $x = shift;
my $y = shift;
$x->{$ref}{amount}++;
if ($y->{$ref}{orientation} eq "for"){
$x->{$ref}{amountFor}++;
} else {
$x->{$ref}{amountRev}++;
}
}
&count_orientation ($ref_end, \%error_start, \%score);
Always remember that you're working on your original hashes when using references:
sub foo {
my $hashref = shift;
delete $hashref->{a};
print keys %$hashref;
}
%x = (a => 1, b => 2);
foo(\%x);
print $x{a};
The sub will modify the original %x and $x{a} is gone away at the last line.