2011-08-11 54 views
2

我正在嘗試編寫一些用於從CSV文件中提取信息的Perl代碼。在我開始編寫代碼之前,我已經搜索並檢查CPAN以查看可能存在哪些perl模塊來幫助並遇到包Tie::CSV_FilePerl包Tie :: CSV_File

我的問題是這樣的:我似乎無法安裝它從CPAN,因爲該模塊的測試有大量的錯誤。我找不到解釋如何解決此問題的任何內容。我甚至試着直接下載模塊並構建它,但那些錯誤仍然存​​在。我已經使用perl 5.10,5.12和5.14,但是錯誤仍然存​​在,顯然仍然是一樣的。

有沒有人有任何想法是怎麼回事?

有沒有人有一個很好的替代Tie::CSV_File?我想使用它的原因是因爲它允許您打開CSV文件並將其視爲一個數組,通過使用二維數組語法對它們進行尋址來直接訪問每個單元格。

在此先感謝您的任何洞察力。

編輯#1 當我嘗試安裝領帶:: CSV_File我收到以下錯誤消息:

Files=12, Tests=10, 1 wallclock secs (0.05 usr 0.02 sys + 0.79 cusr 0.12 csys = 0.98 CPU) 
Result: FAIL 
Failed 10/12 test programs. 4/10 subtests failed. 
make: *** [test_dynamic] Error 255 
    BIGJ/Tie-CSV_File-0.21.tar.gz 
    /usr/bin/make test -- NOT OK 
//hint// to see the cpan-testers results for installing this module, try: 
    reports BIGJ/Tie-CSV_File-0.21.tar.gz 
Running make install 
    make test had returned bad status, won't install without force 
Failed during this command: 
BIGJ/Tie-CSV_File-0.21.tar.gz    : make_test NO 
+0

我們在這裏需要更多的信息。你得到什麼樣的錯誤?你在哪個平臺上?一些可行的替代方法是Tie :: Handle :: CSV或Text :: CSV_XS。 – frezik

+0

如果您安裝了perl並安裝了cpan,只需執行以下操作:'cpan install Tie :: CSV_File',您可能會看到我正在討論的錯誤。 –

+0

@Zeke Hansell,在嘗試修補'Tie :: CSV_File'後,我決定模擬自己的,請參閱下面的答案。 –

回答

2

如果它的任何安慰Tie::CSV_File似乎是failing for everyone!我會環顧四周,嘗試提供一些替代方案。 現在你可以嘗試安裝一個看起來工作得更好的以前的版本。沒關係,似乎Perl版本> 5.8的測試都失敗了。

更新:我試圖修補Tie::CSV_File以修復其缺陷。我解決了一些問題,但無法解決它令我滿意。最接近的其他CPAN模塊是Tie::Array::DBD,雖然它聲稱對CSV的性能非常低。

我嘲笑了自己試圖製作一個tie可用的CSV陣列,現在已經發布給CPAN,標題爲Tie::Array::CSV,並在github上提供。

+0

謝謝!我開始覺得我要麼失去了某些東西,要麼瘋狂。很高興知道它對所有人都是失敗的,而不僅僅是對我而言。 –

+0

我會看看你的新模塊。但是今天是星期五,可能要過幾天才能回到它。 –

+0

當你到達它時,它會在你身邊,希望它有幫助。如果您有任何意見,請告訴我 –

0

我有很多的CSV文件中提取信息的工作。使用領帶:: CSV_FILE另一種就是:

open my $file, '<', "filename.csv"; 

while(defined (my $line = <$file>)){ 
    my @lineArray = split ',', $line; 
    my $firstValue = $lineArray[0]; 
    my $secondValue = $lineArray[1]; 
} 
+0

謝謝,是的,這是一個替代方案,但不是我要找的。首先 - 如果CSV文件帶有帶引號的字符串,並帶有嵌入逗號,那麼您的拆分實際上不會正確拆分該行。其次,Tie :: CSV_File模塊應該可以讓您像訪問一個二維數組一樣訪問整個CSV文件。 –