【发布时间】:2015-04-03 21:38:37
【问题描述】:
我是使用 perl 的新手。我想要做的是比较两个文件。一个是我称之为“临时”的索引文件。我正在尝试使用它来搜索我称为“数组”的主文件。索引文件中只有数字。我的数组中有一些具有这些数字的行。我一直试图找到这两个文件之间的交集,但我的代码不起作用。这就是我一直在尝试做的事情。
#!/usr/bin/perl
print "Enter the input file:";
my $filename=<STDIN>;
open (FILE, "$filename") || die "Cannot open file: $!";
my @array=<FILE>;
close(FILE);
print "Enter the index file:";
my $temp=<STDIN>;
open (TEMP, "$temp") || die "Cannot open file: $!";
my @temp=<TEMP>;
close(TEMP);
my %seen= ();
foreach (@array) {
$seen{$_}=1;
}
my @intersection=grep($seen{$_}, @temp);
foreach (@intersection) {
print "$_\n";
}
如果我不能使用交集,那么我还能做些什么来移动两个文件之间匹配的每一行?
对于那些要求主文件和索引文件的人:
主文件:
1 CP TRT
...
14 C1 MPE
15 C2 MPE
...
20 CA1 MPE
索引文件
20
24
22
17
18
...
我想将那些包含索引文件中数字之一的行放入一个新数组中。所以使用这个例子,只有 20 CA1 MPE 将被放置到一个新阵列中。 我的主文件和索引文件都比我展示的要长,但希望这能让您了解我正在尝试做什么。
【问题讨论】:
-
从索引文件和主文件中给出一个示例行。
-
发布您输入的两个文件的数据和预期的输出。
-
我用请求的信息更新了主帖
标签: perl