【问题标题】:Perl package Tie::CSV_FilePerl 包 Tie::CSV_File
【发布时间】:2011-10-25 01:46:27
【问题描述】:

我正在尝试编写一些用于从 CSV 文件中提取信息的 perl 代码。在我开始从头开始编写代码之前,我已经搜索并检查了CPAN 以查看可能存在哪些类型的 perl 模块来提供帮助并遇到包 Tie::CSV_File

我的问题/问题是:我似乎无法从 CPAN 安装它,因为该模块的测试有大量错误。我找不到任何解释如何为这个模块解决这个问题的东西。我什至尝试直接下载模块并构建它,但这些错误仍然存​​在。我使用过 perl 5.10、5.12 和 5.14,但错误仍然存​​在并且显然仍然相同。

有人知道发生了什么吗?

有没有人可以替代Tie::CSV_File?我想使用它的原因是因为它允许您打开 CSV 文件并将其视为一个数组,通过使用二维数组语法寻址它们直接访问每个单元格。

提前感谢您提供的任何见解。

编辑#1 当我尝试安装 Tie::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

【问题讨论】:

  • 我们在这里需要更多信息。你得到什么样的错误?你在哪个平台?一些可能有效的替代方法是 Tie::Handle::CSV 或 Text::CSV_XS。
  • 如果您安装了 perl 和 cpan,只需执行以下操作:'cpan install Tie::CSV_File' 您可能会看到我所说的错误。
  • @Zeke Hansell,在尝试修补 Tie::CSV_File 之后,我决定模拟我自己的,请参阅下面的答案。
  • @Zeke Hansell,试试我的新模块Tie::Array::CSV 看看它是否对你有帮助。 (点击 CPAN 可能需要一点时间,但已经在 metacpan.org 上可用)

标签: perl cpan


【解决方案1】:

我处理大量 csv 文件提取信息。使用 Tie::CSV_FILE 的替代方法是:

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

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

【讨论】:

  • 谢谢,是的,这是另一种选择,但不是我想要的。首先 - 如果 CSV 文件包含带引号的字符串,并带有嵌入的逗号,那么您的拆分实际上不会正确拆分行。其次 - Tie::CSV_File 模块应该能够让您访问整个 CSV 文件,就好像它是一个二维数组一样。
【解决方案2】:

如果有任何安慰Tie::CSV_File 似乎是failing for everyone!我会环顾四周并尝试提供一些替代方案。 现在您可以尝试安装一个看起来工作得更好的以前的版本。 没关系,似乎 Perl 版本 > 5.8 的测试都失败了。

更新:我尝试修补 Tie::CSV_File 以修复其缺陷。我解决了一些问题,但无法让我满意。最接近的其他 CPAN 模块是 Tie::Array::DBD,尽管它声称对于 CSV 的性能非常慢。

我已经模拟了自己尝试创建一个tie-able CSV 数组,现在已将其发布到 CPAN,标题为 Tie::Array::CSV,并在 github 上提供。

【讨论】:

  • 谢谢!我开始认为我要么错过了什么,要么疯了。很高兴知道它对其他所有人都失败了,而不仅仅是我。
  • 我会看看你的新模块。但是今天是星期五,可能要过几天才能恢复。
  • 当您使用它时,它会在您身边,希望对您有所帮助。如果您有任何 cmets,请告诉我
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-30
  • 2017-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多