'-l' has a dual nature - on input it behaves like chomp(), automatically removing newline characters, while on output, as we've seen, it becomes the anti-chomp, adding newlines.
This needs more explication. -l's effect on input and output are not as parallel as this would imply.
-l's effect on input only applies to the LINE loop generated by -n or -p (by adding a chomp at the beginning). If -n and -p aren't specified, no input is changed.
-l's effect on output applies to all print (but not printf) statements, however situate (by virtue of setting $\).
Update: said $/ meant $\.