【问题标题】:Parsing CSV/Text file using Perl使用 Perl 解析 CSV/文本文件
【发布时间】:2015-10-14 16:42:48
【问题描述】:

我正在尝试使用 perl 解析 CSV 文件,我需要读取、添加一个新行(包括到一个空文件和已经包含数据的文件中)并通过匹配特定值来删除行/行,我只想使用内置模块来完成它不想安装外部新模块。

之前我尝试使用 xml 文件,但它需要安装我不想要的 XML::Twig 或 XML::LibXML。

是否可以通过csv或文本文件。

【问题讨论】:

  • 有什么特别的理由要避免使用优秀的 CPAN 模块吗?
  • @MiguelPrz 实际上该脚本将被许多用户使用,他们不想要任何额外的依赖,所以我正在寻找一种方法,因此如果可能的话我不必安装任何模块。跨度>
  • 我认为最好在 Perl 安装过程中学习如何使用外部库分发代码。
  • @MiguelPrz 抱歉,但我不明白你的意思??

标签: xml perl csv


【解决方案1】:

您应该使用 Text::CSV 模块。如果您不想安装它,那么您将面临拆分和棘手的处理。

请参阅 Gabor 的本教程:How to read a CSV file using Perl?

【讨论】:

  • 谢谢,我可以在不安装 Text::CSV 的情况下执行删除和更新操作吗?如果不能,是否可以在不安装任何模块的情况下使用 .txt 文件。
【解决方案2】:

您无需安装新模块即可将 CSV 文件解析为 XML。方法如下:

use warnings;
use strict;
use Data::Dumper;

my $CSVfile="customer.csv";


print "Input Csv file: $CSVfile \n";


my ($arrRef,$keys)= convertCsvToHash($CSVfile);
print Dumper($arrRef);


sub convertCsvToHash{
    my $file = shift;

    open(FILE, "$file");
    my @arr = <FILE>;
    close(FILE);

    my @hashArry;
    chomp($arr[0]);
    my @keys = split(',',$arr[0]);

    for my $i(1..$#arr){
            chomp($arr[$i]);
            my @splitRec = split(',',$arr[$i]);

            my $hash = {};
            for my $j(0..$#keys){
                    $hash->{$keys[$j]} = $splitRec[$j]
            }
            push @hashArry,$hash;
    }
    return \@hashArry, \@keys;
}

【讨论】:

  • 您的链接已损坏。这段代码中没有任何关于 XML 的内容。
  • 复制粘贴错误,添加直接链接,编辑不接受同名链接
  • @sandeep 我猜你没有得到我的问题,这不是我问的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-02-28
  • 2012-10-09
  • 1970-01-01
  • 2016-12-16
  • 2016-07-31
  • 1970-01-01
  • 2021-01-03
相关资源
最近更新 更多