【发布时间】:2011-06-19 22:16:17
【问题描述】:
我有几个制表符分隔的数据文件。我需要提取这些数据文件的某一列(例如第 25 列)中的所有唯一值,并将这些值写入输出文件以进行进一步处理。我怎么能在 Perl 中做到这一点?请记住,我需要考虑同一文件夹中的多个文件。
edit:到目前为止我所做的代码是这样的。
#!/usr/bin/perl
use warnings;
use strict;
my @hhfilelist = glob "*.hh3";
for my $f (@hhfilelist) {
open F, $f || die "Cannot open $f: $!";
while (<F>) {
chomp;
my @line = split /\t/;
print "field is $line[24]\n";
}
close (F);
}
问题是我如何在读取每个文件的每一行时有效地创建唯一值的哈希/数组。或者如果我填充整个数组然后删除重复项会更快吗?
【问题讨论】:
-
@davorg 好吧,我被基本问题本身所困扰。首先,我如何一次读取多个文件。下一个是在我读取每个文件时只考虑唯一值。我猜可以使用 Find::File 包。
-
@DVK yes 是已经在 Perl 中的更大代码的一部分。
-
您通常不应该使用 split 来解析 X 分隔的文件。除了最微不足道的情况外,这还不够——例如不处理字段内的 X(分隔符)或被引用的字段。不过,在微不足道的情况下它可以工作