regex - 设置 $/="\R"会允许 chomp() 与 perl 中的大多数文件一起正常工作吗?

标签 regex perl newline

有谁知道是否设置 $/="\R";会可靠地让 chomp() 做正确的事情,即删除一行中的任何行尾约定吗?

具体来说,我在 Windows 和 UNIX 上运行脚本,并且必须处理来自网络的文件,并且具有未知的行尾约定:MS-DOS、UNIX、MacOS < 9,等等。

我最近偶然发现了“\R”,但我以前没见过。我认为这是新的。嗯,比 Perl 5.006 新。 (有一阵子了。)

"\R"也声称做 Unicode 换行符。我没有办法正确地测试这个。

谢谢。

-埃里克

我很惊讶地发现 stackoverflow 中实际上有一个“换行符”标签。

最佳答案

Will setting $/='\R' allow chomp() to work correctly with most files in perl?



设置 $/'\R'将考虑两个字符的序列 "\\R"作为换行符。
设置 $/"\R"将导致关于 Unrecognized escape 的警告.
\R不是字符串,但仅在正则表达式的上下文中才有意义。但是 $/ 的文档明确指出:

Remember: the value of $/ is a string, not a regex. awk has to be better for something. :-)

关于regex - 设置 $/="\R"会允许 chomp() 与 perl 中的大多数文件一起正常工作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51815259/

相关文章:

perl - 我如何在子例程中引用散列?

regex - 替换 HTML 文件中由开始和结束模式标记的多行。

javascript - 包含换行符的 PHP 字符串会导致打印 Javascript 时出现问题

java - 如何处理其开头和/或结尾分为两行的正则表达式?

python - 带有正则表达式解析的新 Pandas 列

javascript - Google Sheet 脚本中的正则表达式

正则表达式 - 匹配 3 位数字

mysql - 正则表达式 vs 加入性能 Mysql

perl - 如何使用 Perl 和 CAM::PDF 读取 PDF 文档属性?

c++ - 在用 C++ 编写字符串的过程中按 'Enter'