【发布时间】:2014-03-30 18:06:43
【问题描述】:
有人可以帮忙吗?我看不出哪里出错了-
我正在尝试为输入文件中的相同值创建两个包含不同键的哈希,以便选择所有大于或等于 2 的键值对并将其打印到单独的文件中。
输入文件,其中第一列是 ID 号,第二列是 ID 名称,第三列是表达式值。 输入文件(input.txt):
ENSG00000251791 SCARNA6 2.5
ENSG00000238862 SNORD19B 6.3
ENSG00000238527 SNORD112 -3
我想选择表达式大于或等于 2 的 ID 号和名称,并将它们打印到单独的文件中,如下所示:
ENSG00000251791 SCARNA6 2.5
ENSG00000238862 SNORD19B 6.3
我已经简化了之前的脚本,它确实可以工作(感谢 M42),因为我的文件非常大,需要节省空间。
代码如下:
use strict;
use warnings;
my $input = 'input.txt';
open my $input_file_handle, '<', $input or die $!;
while (<$input_file_handle>) {
chomp($_);
my @id = split(/\s+/);
my %id1;
my %id2;
my $id1{$id[0]} = $id[1];
my $id2{$id[0]} = $id[2];
foreach (keys%id1) {
print $_,"\t", $id1{$_}, "\t", $id2{$_};
}
}
foreach (keys%id1) {
print "$_ ";
if ($id1{$_} >= 2) {
print "$id1{$_}";
} else {
print "N/A";
}
}
我不断收到 @id 和 %id 的需要明确的包名称错误消息。我不确定我哪里出错了。如果有人有任何建议或解释,那就太好了。
谢谢 哈丽特
【问题讨论】: