Ваш файл данных должен быть создан в Windows, которая использует CRLF в качестве разделителя строк, а не просто LF. Это означает, что ваш текстовый файл выглядит так:
bla[CR][LF]bla bla[CR][LF]blah[CR][LF]
Вы можете проверить это с помощью od -c something.txt
.
$ od -c something.txt
0000000 b l a \r \n b l a b l a \r \n b l
0000020 a h \r \n
0000024
В Unix или Linux это будет выглядеть так:
bla\r
bla bla\r
blah\r
Когда perl выполняет подстановку, это приводит к следующему:
"bla\r",
"bla bla\r",
"blah\r",
И когда вы видите результат, вы получаете то, что видите:
"bla
",
"bla bla
",
"blah
",
Самое простое, что нужно сделать - это использовать dos2unix для преобразования концов строк в формат Unix, тогда ваши скрипты будут вести себя как положено.