Sounds to me like you have non-printable characters in the output.
When you look at the created file with a utility like 'more' or an editor, it probably looks fine. The funny characters are there, but the utility filters them in a way where you can see what you want to see. However, on the console, they aren't filtered for you.
Try adding $type=~s/[^[:print:]]/_/g; (before you print it) and see if any underscores start showing up in $type. That would indicate non-printables (backspaces, vertical tabs, etc) are in your data.