各ファイルに2行のシーケンスを含むディレクトリ内のファイルを開きます。上のシーケンスは下のシーケンスよりも長いが、下のシーケンスを含む。私は、一番上のシーケンスに見つかったら、各方向に2つの隣接する文字で下のシーケンスを拡張したいと思います。私は正規表現のマッチを行うことでこれを試していますが、$ newsequence変数の初期化されていないエラーが発生しています。ここ は、一般的なファイルは次のようになります。変数への正規表現検索の割り当て:初期化されていない変数エラー
>CCCCNNNNNCCCC
NNNNN
私は1つのファイルに次の形式のすべてのシーケンスを印刷したいと思います:ここで
>CCCCNNNNNCCCC
CCNNNNNCC
は、これまでの私のコードです:
use strict;
use warnings;
my ($directory) = @ARGV
my @array = glob "$directory/*";
my $header;
my $sequence;
my $newsequence;
open(OUT, ">", "/path/to/out.txt") or die $!;
foreach my $file (@array){
open (my $fh, $file) or die $!;
while (my $line = <$fh>){
chomp $line;
if ($line =~ /^>/) {
$header = $line;
} elsif ($line =~ /^[CN]/) {
$sequence = $line;
}
my ($newsequence) = $header =~ /(([CN]{2})($sequence)([CN]{2}))/;
}
print OUT $header, "\n", $newsequence, "\n";
}
適切な出力を得るために$ newsequenceへの正規表現の割り当てを改善するにはどうすればよいですか?ありがとう。
どの変数が初期化されていませんか? – Barmar
正確な警告メッセージは何ですか? – melpomene
Barmar- $ newsequence変数は初期化されていません。私はその情報を含めるために私の質問を改善します。 zdim-上のシーケンスで見つかったときに、どちらの側でもボトムシーケンスに隣接する2つの文字を取ります。私もそれを明らかにするでしょう。ありがとう。 – Rob