I fail to understand what the problem is. Both %$v
contain the same set of keys: one two three four five.
You unify the hashes by first filling %union with
the key value pairs of %$v, and then of %csv.
But since the latter hash contains all of the keys of the former,
no trace of content of the former hash can be found.
The program is doing exactly as I expect it to behave.