$foo =~ tr/\cM\cJ//d ; # remove all platforms version of a newline ..
From perldoc perlop :
All systems use the virtual ""\n"" to represent a line
terminator, called a "newline". There is no such thing as
an unvarying, physical newline character. It is only an
illusion that the operating system, device drivers, C
libraries, and Perl all conspire to preserve. Not all
systems read ""\r"" as ASCII CR and ""\n"" as ASCII LF.
For example, on a Mac, these are reversed, and on systems
without line terminator, printing ""\n"" may emit no
actual data. In general, use ""\n"" when you mean a "new
line" for your system, but use the literal ASCII when you
need an exact character. For example, most networking
protocols expect and prefer a CR+LF (""\015\012"" or
""\cM\cJ"") for line terminators, and although they often
accept just ""\012"", they seldom tolerate just ""\015"".
If you get in the habit of using ""\n"" for networking,
you may be burned some day.