我正在處理包含製表符分隔序列的輸入文件。序列組通過換行符分隔。該文件看起來像:如何計算散列中存在的鍵的數量?
TAGC TAGC TAGC HELP
TAGC TAGC TAGC
TAGC HELP
TAGC
這裏是我的代碼有:
use strict;
use warnings;
open(INFILE, "<", "/path/to/infile.txt") or die $!;
my %hash = (
TAGC => 'THIS_EXISTS',
GCTA => 'THIS_DOESNT_EXIST',
);
while (my $line = <INFILE>){
chomp $line;
my $hash;
my @elements = split "\t", $line;
open my $out, '>', "/path/to/outfile.txt" or die $!;
foreach my $sequence(@elements){
if (exists $hash{$sequence}){
print $out ">$sequence\n$hash{$sequence}\n";
}
else
}
$count++;
print "Doesn't exist ", $count, "\n";
}
}
}
我怎麼知道有多少序列存在之前,我打印?我需要將該信息放入輸出文件的名稱中。
理想情況下,我會在文件名中包含一個變量。不幸的是,我不能僅僅採用@elements的標量,因爲有些序列不會被打印出來。當我嘗試將存在的鍵推入數組中,然後打印該數組的標量時,我仍然得不到所需的結果。這是我試過的(所有變量都需要全局性的):
open my $out, '>', "/path/to/file.$number.txt" or die $!;
foreach my $sequence(@elements){
if (exists $hash{$sequence}){
push(@Array, $hash{$sequence}, "\n");
my $number = @Array;
print $out ">$sequence\n$hash{$sequence}\n";
#....
感謝您的幫助。真的很感激它。
這太好了。謝謝。 – Rob