2013-10-09 93 views
0

我的excel文件包含我的數據。我將它保存爲製表符分隔的txt文件。將excel文件轉換爲txt,然後在perl中打開

但是,如果我做一個簡單的Perl腳本:

open(IN, '<', 'myfile.txt') or die; 
while (defined(my $line = <IN>)){ 
    print "$line\n"; 
} 
close IN; 

只打印出一條線,但它包含了所有的數據 - 只要在同一行 如果我使用其他數據文件,不存在任何問題,所以我認爲有一個問題在excel文件轉換爲txt文件。

有人可以幫我嗎?

+2

您在閱讀之前是否設定了'$ /'? – geoffspear

+0

打開數組? – fugu

+0

你能告訴我們輸入文件嗎? – fugu

回答

0

嘗試while (<IN>)代替。你的病情擊敗魔術時..

+1

我不明白代碼有什麼問題,但我的問題是它將整個文件讀取爲一行 - – user2335015

+0

您確定每行都以「\ n」結尾嗎? –

0

我會循環改變爲:

while(my $line = <IN>) { ... } 

有沒有必要使用()定義。

+1

也許沒有必要,但它沒有什麼區別。你能幫我解決我的問題嗎? – user2335015

0

我不確定是否有這個答案呢。但是,首先確保你已經在你的代碼如下:

use strict; 
use warnings; 

這會給你調試的幫助,你會得到其他。使用上述內容可以爲您提供更多有用的信息。

當我把你打開命令在當前節目,我對我的工作收到此調試消息:

Name "main::IN" used only once: possible typo at ./test.pl line 37 

你也可能需要使用的文件句柄這樣的Perl能記住去哪裏。這是在Perl中打開文件的「新」方式,在線上的perldoc中有解釋。只需搜索「打開perl文件句柄」。我學會了做我開的是這樣的:

open my $in '<', 'myfile.txt' or die; 

然後,你可以運行以下命令:

while (my $line = <$in>) { ... } 

有一種更好的方式來做到這一點如果你已經被引入到Perl的默認變量,但我不認爲你有這樣的解決方案可能是最好的。

相關問題