【发布时间】:2012-12-03 09:12:54
【问题描述】:
我在这部分代码上花了几个小时,但仍然不知道如何使它工作,所以任何建议都会很棒!
我有 2 个文件,list1.txt 和 dictionary.txt。 list1.txt 看起来像
rs1
rs2
rs4
rs5
dictionary.txt 看起来像
rs1 1 A G
rs2 2 C T
rs3 3 A A
rs4 4 G G
这些列由空格分隔 - 有四列。 我想要做的是对于list1.txt 中的每个单词,在dictionary.txt 中搜索该单词,如果存在,将dictionary.txt 中的整行打印到第三个文件中。如果dictionary.txt中不存在该单词,只需打印该单词即可。
所以,如果我用上面列出的文件运行下面的程序,我的结果应该是这样的
rs1 1 A G
rs2 2 C T
rs4 4 G G
rs5
上述程序:
open(LIST1, '<', 'test_chr1_22.txt') or die "Could not open chr1_22.txt: $!";
open(OUTPUT, '>', 'test_chr1_22_all_info.txt');
foreach my $line1 (<LIST1>)
{
foreach my $line (@DICT)
{
if ($line =~ m/"$line1"/)
{
print OUTPUT"$line\n";
}
}
}
这是我现在拥有的代码。我知道它没有我的第二个条件,即如果字典中不存在该单词,则只需打印该单词。但是,我什至无法解决第一部分,如果单词在字典中,则打印该行。我从这个空白文本文件中得到什么。有谁知道怎么回事?
【问题讨论】:
-
使用严格;在代码的顶部。你似乎没有在任何地方读过@DICT,就像你读过 LIST1
-
我忘记在帖子中包含我的那部分代码,所以我有它。不过感谢您的提醒!