换行符don';在FTP文件(Perl)的输入上不存在

换行符don';在FTP文件(Perl)的输入上不存在,perl,character-encoding,escaping,Perl,Character Encoding,Escaping,我使用Net::FTP下载了一个csv文件。当我在文本编辑器或excel中查看此文件时,甚至在剪切/粘贴时,它都有换行符,如下所示: 000000000 G911 | 06 0000000000 CDR | 25 | 123 0000000000埃及镑| 19 当我用Perl读取文件时,它将整个文本视为一行,如下所示: 000000000 G911 | 060000000000CDR | 25 | 1230000000000EGP | 19 我试着用英语读它 tie @lines, 'Tie::

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

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

000000000 G911 | 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";  
}  


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

如果您已在ASCII模式下执行传输(例如,
$ftp->ASCII
以启用此模式),则应注意并纠正此问题


或者,您可以找出用于换行符的内容,然后将特殊的
$/
变量设置为该值。

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

如果您已在ASCII模式下执行传输(例如,
$ftp->ASCII
以启用此模式),则应注意并纠正此问题


或者,您可以找出用于换行符的内容,然后将特殊的
$/
变量设置为该值。

是的,忘了提到我使用的是$ftp->ascii。如何查看文件用于换行符的内容?@heatherspunce Use
Use Data::Dumper;$Data::Dumper::Useqq=1;print Dumper$l;
它将写入去掉空白。注意:如果ASCII模式未正确转换换行符,可能这意味着服务器的换行符也不是本机格式。是的,忘记提到我使用的是$ftp->ASCII。如何查看文件用于换行符的内容?@HeatherSpence Use
Use Data::Dumper;$Data::Dumper::Useqq=1;printDumper$l;
它将写出空白。注意:如果ASCII模式没有正确转换换行符,可能这意味着换行符也不是服务器的本机格式。为什么在
open
和readline语句中有反勾号?我希望这不是在实际代码中。为什么在您的代码中有反勾号r
open
和readline语句?我希望这不是您实际的代码。
open FILE, "`<`$filename" or die $!;    
my @lines=`<`FILE>;  
foreach $l (@lines)  
{print "$l\n";  
}  
close FILE;