I've run into these "ending" problems with the input from Web browser "textarea" form boxes with browsers running on different platforms -- on say Windows, Linux and Macintosh.
In a form textarea box most Windows browsers (esp. MS IE) after an "enter" or "return" produce a lfcr, on Linux just a lf, and on a Mac browser just a cr (since each plaform developers had differing notions of what constitutes a line break).
Below is the rather inelegant code I used then to display the results on the browser screen (which being HTML wants a <br>, and in the file system of the UNIX box the data were being saved to, which whats a '\n' or lf.
$phrases was the return parameter from a browser textarea box which could have one or more lines with endings generated by the "enter" key.
# Account for differences in browser returns
# Replace \r\n, \r, or \n with <br>
$lf = chr(10);
$cr = chr(13);
$phrases =~ s/$lf/<br>/g;
$phrases =~ s/$cr/<br>/g;
# In case you were on Windows and not UNIX nor MAC,
# now have two <br>'s rather than one
$phrases =~ s/<br><br>/<br>/g;
# Show $html_phrases in text box of browser
$html_phrases = $phrases;
# Fix $phrases for storage in UNIX file
$phrases =~ s/<br>/\\n/g;
Must be an easier way, but this got the list in $phrases displayed properly in the browser, and saved with a single "\n" for line endings regardless of which browser it came from.
Live in the moment