2013-02-15 75 views
0

我使用Net :: FTP下載了一個csv文件。當我看到這個文件的文本編輯器或Excel,甚至當我剪切/粘貼具有換行符,看起來像這樣:
000000000G911 | 06
0000000000CDR | 25 | 123
0000000000EGP | 19來自FTP文件(Perl)的輸入中不存在換行符

當我閱讀在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

爲什麼在你的「open」和readline語句中有反引號?我希望這不在你的實際代碼中。 – TLP 2013-02-15 10:35:02

回答

3

的文件有換行符在Perl是不承認,因爲它是從不同的操作系統來的格式。其他程序會自動檢測不同的換行符格式,但Perl不會這樣做。

如果您有Net::FTP以ASCII模式執行傳輸(例如$ftp->ascii以啓用此模式),應該照顧並糾正這一點。

或者,您可以計算出換行符的用途,然後將特殊的$/變量設置爲該值。

+0

是的,忘記提及我使用$ ftp-> ascii。如何查看文件用於換行符的內容? – HeatherSpence 2013-02-15 10:11:12

+3

@HeatherSpence使用'use Data :: Dumper; $數據::自卸車:: Useqq = 1;打印Dumper $ l;'它會寫出空白。 – TLP 2013-02-15 10:37:04

+0

注意:如果ASCII模式沒有正確翻譯換行符,也許這意味着換行符也不是服務器的本機格式。 – 2013-02-15 12:09:48

相關問題