my $_passThis; foreach my $key (keys (%_billingInfo)) { $_passThis .= $key .'='. escapeHTML ($_billingInfo{$key}) . "^"; } my $_cardCharged = chargeCard($_passThis); # And at the subroutine I fixed it this way: sub chargeCard { my $_passedList = shift; my @_PassedL = split (/\^/, $_passedList); my %_billingHash = (); foreach my $_k (@_PassedL) { ($_key,$_value) = split /\=/, $_k, 2; $_billingHash{"$_key"} = $_value; }