如何使用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; 但是,对于非常大的文件,您不应该这样做,因为文件完全被读入内存.请注意,将$/设置为未定义的值会禁用行分隔符,这意味着在文件结束之前一直读取所有内容. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |