如何使用Perl逐行读取CR-only文件?

前端之家收集整理的这篇文章主要介绍了如何使用Perl逐行读取CR-only文件?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试读取只有CR作为行分隔符的文件.我正在使用Mac OS X和Perl v.5.8.8.对于每种行分隔符(CR,LF,CRLF),此脚本应在每个平台上运行.

我目前的代码如下:

open(FILE,"test.txt");

while($record = <FILE>){
    print $record;
}

close(TEST);

目前只打印最后一行(或最差).到底是怎么回事?
很明显,我想不转换文件.可能吗?

解决方法

您可以使用特殊变量$/设置分隔符:

local $/ = "\r" # CR,use "\r\n" for CRLF or "\n" for LF
my $line = <FILE>;

有关详细信息,请参见perldoc perlvar.

另一种适用于各种换行符的解决方案是立即对整个文件进行啜食,然后使用正则表达式将其拆分为多行:

local $/ = undef;
my $content = <FILE>;
my @lines = split /\r\n|\n|\r/,$content;

但是,对于非常大的文件,您不应该这样做,因为文件完全被读入内存.请注意,将$/设置为未定义的值会禁用行分隔符,这意味着在文件结束之前一直读取所有内容.

猜你在找的Perl相关文章