Perl新行分隔符问题

Perl新行分隔符问题,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

我有一个使用CR/LF来分隔记录的文件,但个别记录有时包含LF

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>) {
    ...
}