Perl新行分隔符问题
我有一个使用CR/LF来分隔记录的文件,但个别记录有时包含LFPerl新行分隔符问题,perl,newline,Perl,Newline,我有一个使用CR/LF来分隔记录的文件,但个别记录有时包含LF while (<$in>) { #extract record data } 这里有人能提出有效的解决方案吗 我正在Windows上使用Activestate Perl。尝试将$/设置为“\n”。发件人: Perl使用\n表示“逻辑”换行符,其中什么是逻辑的 可能取决于使用的平台。在MacPerl中,\n始终表示\015。 在DOSSH perls中,\n通常表示\012,但在访问 在“文本”模式下,perl
while (<$in>)
{
#extract record data
}
这里有人能提出有效的解决方案吗
我正在Windows上使用Activestate Perl。尝试将
$/
设置为“\n”
。发件人:
Perl使用\n
表示“逻辑”换行符,其中什么是逻辑的
可能取决于使用的平台。在MacPerl中,\n
始终表示\015
。
在DOSSH perls中,\n
通常表示\012
,但在访问
在“文本”模式下,perl使用将其转换为(或从)的:crlf
层
\015\012
,取决于您是在读还是在写
先试试这个
binmode($in);
在windows上,perl将传入的CRLF行尾转换为LF only,通过将数据读入文本()来区分CRLF和LF。因此,您必须在文件句柄上使用以下命令以二进制模式读取数据:
binmode($in);
之后,您可以将输入记录分隔符设置为“\015\012”,并像往常一样读取记录:
$/ = "\015\012";
while (<$in>) {
...
}
$/=“\015\012”;
而(){
...
}
你好,马提亚
PS:我目前没有机会在本地测试,所以如果它不起作用,我很遗憾
$/ = "\015\012";
while (<$in>) {
...
}