in reply to hash{X}=array[X] results in two hash keys

The assignment is OK. The problem lies in the way how you iterate over the hash:
foreach my $arg ( %arguments ) {

You want to only iterate over the keys:

foreach my $arg ( keys %arguments ) {

Without keys , a hash behaves like a flattened list of key-value pairs, i.e.

key1, value1, key2, value2, ...

With warnings on, you'd have been warned about the uninitialized values for some "keys" (i.e. the real values):

Use of uninitialized value in concatenation (.) or string at ...

($q=q:Sq=~/;[c](.)(.)/;chr(-||-|5+lengthSq)`"S|oS2"`map{chr |+ord }map{substrSq`S_+|`|}3E|-|`7**2-3:)=~y+S|`+$1,++print+eval$q,q,a,