I have a script that is appending new fields to an existing CSV, however ^M characters are appearing at the end of the old lines so the new fields end up on a n
^M
^M is carriage return. You can do this:
$str =~ s/\r//g