Perl\R regex剥离Windows换行符

gma*_*rco 5 regex linux windows perl newline

我正在使用Perl脚本使用以下代码删除输入文件中可能的Windows换行符:

foreach my $line(split /\r|\R/)

在两台不同的Linux机器上执行相同的脚本会产生不同的结果.在machine1脚本按预期工作,在每次发现大写"R"字符时在machine2上,行被拆分并且结果被弄乱.

我想知道\R正则表达式是否正确以及如何使machine2按预期运行.

l'L*_*L'l 6

在Perl中,可以处理回车的方式有几个不同之处:

\n matches a line-feed (newline) character (ASCII 10)
\r matches a carriage return (ASCII 13)
\R matches any Unicode newline sequence; can be modified using verbs
Run Code Online (Sandbox Code Playgroud)

Windows使用两个字符ASCII 13+ ASCII 10(\r\n)和unix uses ASCII 10(\n).的\R表达式匹配任何Unicode新行序列(\r,\n,\r\n).

可能的原因\R在一台机器而不是另一台机器上工作可能是不同的版本Perl.\R是介绍perl 5.10.0,所以如果其他机器使用旧版本,那么更新应解决您的问题.

更多信息: