【发布时间】:2015-07-14 15:07:27
【问题描述】:
我想在 Perl 中映射两个数据集。我有一个不变的数据集(参考 1),其他数据必须从一系列文件(1-20)中提取以匹配参考 1。
Ref1
ID1 ID2
1 HZ
1 HX
1 HY
2 C
2 HZ
2 N
File 1
ID2 ID3
HA 5
HB 4
HC 7
N 2
File 2
ID2 ID3
C 9
HZ 11
N 0
理想输出:
ID1 ID2 ID3
1 HZ 5
1 HX 4
1 HY 7
2 C 9
2 HZ 11
2 N 0
在 ref1 中 ID2 的第一个字母与 file1 中 ID2 的第一个字母之间发生匹配,直到匹配所有 ID1 条目,然后打开 file2 并与所有编号为 2 的 ID1 匹配。文件名的格式为number001.txt, number002.txt 等,所以可以从文件名中检索到 ID1。
我希望这是有道理的。我是 Perl 的初学者,这就是我目前所拥有的:
#!/usr/bin/perl
use strict;
use warnings;
my $ref1 = 'test.txt';
my $input_path = '/path/';
open my $fh, '<' $ref1 or die "Can't read $ref1: $!";
chomp (my @ref1 = <$fh>);
my %hash = @ref1;
my @filehandles;
for ($i=0; $i<20, $i++) {
local *FILE;
open(FILE, ">number$i.txt") or die $!;
push(@filehandles, *FILE);
}
任何建议都会非常有帮助。
【问题讨论】:
标签: perl