我在提供的配置的基础上创建了正常的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");
任何人都可以有任何建议吗?
答案 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。删除它们的最佳位置与读取文件的位置相同。