私は、タブで区切られたシーケンスを含む入力ファイルを扱っています。一連のグループは改行で区切られています。ファイルには、次のようになります。ハッシュに存在するキーの数を数えるには?
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";
}
}
}
どのように私は印刷する前に存在してどのように多くのシーケンス伝えることができます:ここで
TAGC TAGC TAGC HELP
TAGC TAGC TAGC
TAGC HELP
TAGC
は、私が持っているコードはありますか?その情報を出力ファイルの名前に入れる必要があります。
理想的には、ファイルの名前に含めることができる変数があります。残念ながら、@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