来自FTP文件(Perl)的输入中不存在换行符

时间:2013-02-15 09:46:42

标签: perl character-encoding escaping

我使用Net :: FTP下载了一个csv文件。当我在文本编辑器或excel中查看此文件时,甚至当我剪切/粘贴时,它都有换行符,如下所示:
    000000000G911 | 06
    0000000000CDR | 25 | 123
    0000000000EGP | 19

当我在Perl中读取文件时,它将整个文本视为一行,如下所示:

000000000G911 | 060000000000CDR | 25 | 1230000000000EGP | 19

我尝试使用

阅读
tie @lines, 'Tie::File', "C:/Programs/myfile.csv", autochomp=>0  or die "Can't read file: $!\n";  
foreach $l (@lines1)  
    {print "$l\n";  
}  

open FILE, "`<`$filename" or die $!;    
my @lines=`<`FILE>;  
foreach $l (@lines)  
{print "$l\n";  
}  
close FILE;

1 个答案:

答案 0 :(得分:3)

该文件具有Perl无法识别的格式的换行符,因为它来自不同的操作系统。其他程序会自动检测不同的换行符格式,但Perl不这样做。

如果Net::FTP以ASCII模式执行传输(例如$ftp->ascii以启用此模式),则应该为您处理并纠正此问题。

或者,您可以弄清楚换行符的用途,然后将特殊的$/变量设置为该值。