Так выглядит новая строка в операционных системах Windows (\ r \ n) и linux (\ n)
В Unix \ r - это возврат каретки (CR) и \ na перевод строки(LF), которые вместе оказываются идентификатором новой строки Windows, и вы заменяете их идентификатором новой строки Unix.
В Windows \ r также является CR, но \ n является комбинацией CRи LF.Таким образом, вы пытаетесь заменить CR + CR + LF на CR + LF.Не имеет особого смысла, не так ли.
Из "perldoc perlop": Все системы используют виртуальный "" \ n "" для представления ограничителя строки, называемого «новой строкой».Нет такой вещи как неизменный, физический символ новой строки.Это всего лишь иллюзия того, что операционная система, драйверы устройств, библиотеки C и Perl все хотят сохранить.Не все системы читают "" \ r "" как ASCII CR и "" \ n "" как ASCII LF.Например, на Mac они поменялись местами, а в системах без ограничителя строки печать "\ n" "может не давать никаких фактических данных.В общем, используйте "" \ n "", когда вы подразумеваете "новую строку" для вашей системы, но используйте буквенный ASCII, когда вам нужен точный символ.Например, большинство сетевых протоколов ожидают и предпочитают CR + LF ("" \ 015 \ 012 "" или "" \ cM \ cJ "") для ограничителей строки, и хотя они часто принимают только "" \ 012 "", ониредко терпеть просто "" \ 015 "".Если вы привыкли использовать "" \ n "" для работы в сети, возможно, однажды вас обожгут.