将csv文件与文件进行比较并找到匹配项不起作用

时间:2015-08-04 03:46:46

标签: perl csv match

我正在将csv文件与另一个普通文件进行比较,这两个文件都有很多类似的单词(字段),但它不匹配

my $file = "sample.csv";
open my $fh, "<", $file or die "$file: $!";
my $csv1 = Text::CSV->new ({
      binary    => 1, # Allow special character. Always set this
      auto_diag => 1, # Report irregularities immediately
});
my @lines = read_file("brand1.txt");

my $count = 0;
while (my $row = $csv1->getline ($fh)) {
   $count = $count + 1;
   foreach my $line(@lines) {

      my $che = $row->[4];
      print $count;
      if ($line eq $che){
         print $line ."\t". $che;
      }
   }
}

此代码在终端中为我提供空白输出。

但是比较两个文件(没有csv文件)可以使用相同的脚本

1 个答案:

答案 0 :(得分:0)

在试图弄清楚为什么两件事情不平等时,最好的办法就是打印这两件事。

print "<<<$line>>>\n>>>$che<<<\n";

这将在视觉上向您展示差异是什么,大部分时间都会使其显而易见。

在您的情况下,问题是read_file没有chomp输入,因此@lines中的每一行最后都有一个\n。但是,您解析的CSV不会。

如果你这样做:

chomp @lines;

它应该可以正常工作。