加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-16 06:11:05 所属栏目:大数据 来源:网络整理
导读:我正在尝试读取只有CR作为行分隔符的文件.我正在使用Mac OS X和Perl v.5.8.8.对于每种行分隔符(CR,LF,CRLF),此脚本应在每个平台上运行. 我目前的代码如下: open(FILE,"test.txt");while($record = FILE){ print $record;}close(TEST); 目前只打印最后一行(
我正在尝试读取只有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 "rn" for CRLF or "n" for LF
my $line = <FILE>;

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

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读