On the second point:
add binmode OUT, ":utf8";after the file open
I think is better, to use binmode OUT, ":encoding(UTF-8)"; because ':encoding(UTF-8)'checks the data for actually being valid UTF-8, while ':utf8' just marks the data as UTF-8 without further checking. Please check binmode.
If you tell me, I'll forget.
If you show me, I'll remember.
if you involve me, I'll understand.
--- Author unknown to me