【发布时间】:2017-02-19 02:51:20
【问题描述】:
我在 Windows 中运行 perl,并且我有一些文本文件,其中 CRLF (0d0a) 中的行。问题是,文件周围偶尔会出现一些 0a 字符,这些字符在 Windows perl 中分割行并与我的处理混淆。我的想法是预处理文件,读取由 CRLF 分割的行,但至少在 Windows 中,它也坚持在 LF 上分割。
我试过设置 $/
local $/ = 0x0d;
open(my $fh, "<", $file) or die "Unable to open $file";
while (my $line = <$fh>) {
# do something to get rid of the 0x0a embedded in the line of text;
}
...但是这读了多行...它似乎完全错过了 0x0d。我也尝试将其设置为“\n”、“\n\r”、“\r”和“\r\n”。必须有一个简单的方法来做到这一点!
我需要删除 ,以便正确处理文件。所以,我需要一个脚本来打开文件,在 CRLF 上拆分文件,找到前面没有 0d 的任何 0a,将其爆破并逐行保存到一个新文件中。
感谢您提供的任何帮助。
【问题讨论】:
-
这个正则表达式:
qr/([\n\x{0B}\f\r\x{85}]{1,2})/;消除了一些东西吗?也许File::Edit::Portable