我有一个使用 CR/LF 分隔记录的文件,但个别记录有时包含 LF。
while (<$in>)
{
#extract record data
}
我正在尝试按上面的方式阅读此代码,这(正如我所期望的)会拆分仅包含 LF 的记录。然而,我希望重新分配$/可以解决此问题,但它似乎确实会导致我在一次迭代中读取完整的文件。
$/ = "\r\n";
while (<$in>)
{
#extract record data
}
这里有人可以提出可行的解决方案吗?
我在 Windows 上使用 Activestate Perl。
在 Windows 上,perl 仅将传入的 CRLF 行结尾转换为 LF,通过以文本形式读入数据来区分 CRLF 和 LF 是不可能的(perlport)。因此,您必须使用二进制模式读取数据binmode在你的文件句柄上:
binmode($in);
之后,您可以将输入记录分隔符设置为“\015\012”并照常读入您的记录:
$/ = "\015\012";
while (<$in>) {
...
}
问候,马蒂亚斯
PS:目前我没有机会在本地进行测试,所以如果它不起作用我会感到遗憾。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)