如何从Windows发送的文件中删除^ M(CRLF)到perl中的linux FTP服务器?

时间:2011-02-18 20:24:19

标签: linux perl ftp ascii newline

我正在通过Perl中的Net :: FTP(在Windows上生成)向基于Linux的FTP帐户发送逗号分隔文件(ASCII格式)。问题是我在linux端的文件在每一行的末尾都有^ M.我知道我可以通过拨打电话来删除这些 dos2unix“命令在该文件上,但如何在Windows端删除^ M,以便我首先发送一个正确的文件。

我尝试过以下操作,但这不会影响linux端的文件。

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

2 个答案:

答案 0 :(得分:1)

如果您有“^”,“M”,则s / \ ^ M // g将起作用。 (“^”在正则表达式模式中很特殊。)如果你有一个CR,那么s / \ r \ n / \ n / g(或者只是s / \ r // g)就可以了。

如果两者都不起作用,请提供数据文件“od -c”的一部分。

答案 1 :(得分:0)

编写文件时:

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

请参阅perldoc -f binmode