We seldom have line-ending problems except when we prepare our input on a different operating system than we use to run our perl. Unless we explicitly specify otherwise, perl assumes that our data uses the line endings of the system that it is running under. Perl calls the appropriate IO-Layer to translate those line endings into perl newlines. (The fact that they are the same as the newline character in UNIX files really does not make any difference). If we try to read windows (CRLF) data under UNIX, the CR will be 'translated' to a perl newline. The LF is not translated at all. It is stored as an ordinary character (the first character of the next line - chomp does not see it at all). On output, the perl newline is 'translated' into a UNIX newline (CR). The LF (when present) is output as the first character of the next line (when it is output). This problem can be solved by specifying IO-Layers. Unfortunately, this is not a beginners topic. For now, just be aware of what is happening.
Sorry, My explanation (italic) is hopelessly confused.