如何从使用Perl脚本在Fly上生成的文件中删除^ M字符

时间:2016-04-05 10:10:01

标签: perl

我在提供的配置的基础上创建了正常的txt文件,因此当我尝试从文件中删除Control M时,它给出了我的错误

syntax error at CreateConfig.pl line 141`, near `perl -p -i -e "s/\r\n/\n/g`
Execution of `CreateConfig.pl` aborted due to compilation errors.

代码行:

system("perl -p -i -e "s/\r\n/\n/g" OptionFile.txt");

任何人都可以有任何建议吗?

2 个答案:

答案 0 :(得分:3)

据推测,OptionFile.txt已在Windows系统上创建?在打开文件之前,不是使用system调用来编辑文件,而是在从文件中读取时处理此文件可能更好

如果你写

open my $fh, '<:crlf', 'OptionFile.txt' or die $!;

然后输入

上的Perl将删除CR(control-M)字符

或者,如果您的阅读循环中已有chomp,则可以将其替换为s/\R\z//\R匹配任何标准行结尾,因此将从Windows文件中删除尾随CR LF

答案 1 :(得分:2)

你不能在doublequote中嵌套双引号。使用单引号代替其中一个。

如果您是从Perl调用它,请使用单引号作为外部引号,否则Perl会插入\r\n。或者,将其替换为直接执行相同操作的代码,而无需再次调用Perl。删除它们的最佳位置与读取文件的位置相同。