perl代码从三个文件中获取值并在另一个文件中打印

时间:2011-11-13 13:13:12

标签: perl

我有一个名为1.txt的文件,其值为:

a
b
c
...

第二个名为2.txt的文件,如下所示:

a 123,
a 156,
a 899,
c 255,

第三个名为3.txt的文件,如下所示:

a 236,
a 890,
b 123,

如何读取上述所有三个文件中的值,并将我的结果写在一个文件中,如下所示:

a  123  236,
-  156  890,
-  899  -,
b  -   123,

文件没有相等的行,没有一行约为10000.我必须使用Perl。

我必须从第一个文件中获取值。 我必须采取第二个文件,我必须采取第二个文件的第二列的值对应于第一个文件的值。

同样,我必须从第三个文件中获取值。

我必须在输出文件中写出我的结果 第一列中第一个文件的值,输出文件第二列中第二个文件中的所有相应值以及输出文件第三列中第三个文件中的所有相应值。

2 个答案:

答案 0 :(得分:0)

读取三个文件:第一个可以读入一个简单的数组,另外两个可以读入哈希值,其中哈希值是一个数组(引用一个数组)。

按排序顺序读取第一个数组。

对于第一个数组中的每个值,从第二个和第三个文件(相应的散列)中查找数组,按顺序对数组值进行排序。适当处理打印,处理第二列和第三列中的缺失值以及第一列中的重复值。

答案 1 :(得分:0)

我首先阅读2.txt的内容并将其存储在arrayrefs的散列中。例如,如果2.txt是这样的话:

a 123,
a 156,
a 899,
c 255,

那么数据结构将是这样的:

{ a => [123, 156, 899],
  c => [255]
}

然后,对3.txt执行相同操作。

只有这样才能通读1.txt。对于1.txt的每一行,您将从上述数据结构中查找相应的数组,并迭代这些数组(使用for(my $i = 0; $i < @two && $i < @three; ++$i)之类的内容),打印结果。