Как удалить ^ M (CRLF) из файла w, отправленного с Windows на FTP-сервер linux в perl? - PullRequest
1 голос
/ 18 февраля 2011

Я отправляю файл с разделителями-запятыми (в ASCII) через Net :: FTP в perl (создается в Windows) на учетную запись FTP на основе linux. Проблема в том, что мой файл на стороне Linux имеет ^ M в конце каждой строки. Я знаю, что могу удалить их, позвонив dos2unix "для этого файла, но как удалить ^ M на стороне Windows, чтобы я отправил правильный файл в первую очередь.

Я попытался сделать следующее, но это не влияет на файл на стороне Linux.

$content =~ s/^M//g;

Ответы [ 2 ]

1 голос
/ 19 февраля 2011

Если бы у вас было "^", "M", то s / \ ^ M // g работало бы. («^» является особенным в шаблонах регулярных выражений.) Если у вас был CR, то s / \ r \ n / \ n / g (или просто s / \ r // g) будет работать.

Если ни одна из них не работает, укажите часть "od -c" вашего файла данных.

0 голосов
/ 18 февраля 2011

Когда вы пишете файл:

open my $fh, '>:raw', $file or die "could not open $file: $!\n";

См. perldoc -f binmode.

...