任何人都可以幫忙嗎?我不明白我要去哪裏錯了 -Perl哈希和if-else條件語句
我想創建兩個散列,它包含來自輸入文件的相同值的不同鍵,以便選擇所有大於或等於等於2並將其打印到單獨的文件。
輸入文件,其中第1列是ID號,第2列是ID名稱,第3列是表達式值。 輸入文件(input.txt中):
ENSG00000251791 SCARNA6 2.5
ENSG00000238862 SNORD19B 6.3
ENSG00000238527 SNORD112 -3
我想選擇的ID號和名稱具有大於或等於一個表達式2和打印這些出單獨的文件看起來像這樣:
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的明確包名稱錯誤消息。我不知道我要去哪裏錯。如果任何人有任何建議或意見,解釋將是神話般的。
感謝 哈里特
有沒有做這件事的方式,以保持在兩列身份證號和姓名?我知道它過於複雜,但我需要兩個ID。除此之外,它非常棒! – user1879573
我收到了更多錯誤消息:在test.pl第18行的 =)中使用了未初始化的值,<$ input_file_handle>第8行。我嘗試了my'ing @id,$ id並註釋掉命令但不輸出 –
user1879573
@ user1879573 https://eval.in/106316 –