ファイルを読み取り、チェーン(M、N、O、..)の数に応じて多数の配列を生成したいと思います。
以下はファイルの一部です。
SEQRES 1 M 312 ALA ALA ASP PRO LYS LEU LEU LYS ALA ALA ALA GLU ALA
SEQRES 2 M 312 SER TYR ALA PHE ALA LYS GLU VAL ASP TRP ASN ASN GLY
SEQRES 3 M 312 ILE PHE LEU GLN ALA PRO GLY LYS LEU GLN PRO LEU GLU
SEQRES 4 M 312 ALA LEU LYS ALA ILE ASP LYS MET ILE VAL MET GLY ALA
SEQRES 5 M 213 SER PHE ASN ARG ASN
SEQRES 1 N 312 ASP GLU ILE GLY ASP ALA ALA LYS LYS LEU GLY ASP ALA
SEQRES 2 N 312 SER TYR ALA PHE ALA LYS GLU VAL ASP TRP ASN ASN GLY
SEQRES 3 N 312 ILE PHE LEU GLN ALA PRO GLY LYS LEU GLN PRO LEU GLU
SEQRES 4 N 312 ALA LEU LYS ALA ILE ASP LYS MET ILE VAL MET GLY ALA
SEQRES 5 N 312 ALA ALA ASP PRO LYS LEU LEU LYS ALA ALA ALA GLU ALA
SEQRES 6 N 312 VAL THR SER ARG ALA ASP TRP ASP ASN VAL
SEQRES 1 O 312 HIS HIS LYS ALA ILE GLY SER ILE SER GLY PRO ASN GLY
SEQRES 2 O 312 SER TYR ALA PHE ALA LYS GLU VAL ASP TRP ASN ASN GLY
SEQRES 3 O 312 ILE PHE LEU GLN ALA PRO GLY LYS LEU GLN PRO LEU GLU
SEQRES 4 O 312 ALA LEU LYS ALA ILE ASP LYS MET ILE VAL
これは私のコードです:
my @seq;
my $string="";
my @seqFile;
my $file=<>;
open(FILE, "$file");
while (my $line=<FILE>){
if ($line =~ /^SEQRES/) {
chomp $line;
push @seq, [split (/\s+/, $line)] ;
}
}
close(FILE);
for my $i (0..$#seq) {
my $ob =$seq[$i][2];
if ($seq[$i][2] eq $ob ){
for (my $j=4;$j<=$#{$seq[$i]};$j++) {
my $temp= $seq[$i][$j];
$string .= $temp;
}
$ob = $seq[$i][2];
last;
}
push @seqFile, $ob;
push @seqFile, $string;
$string = ''; #string needs to be empty to store new lines
}
上記のサンプルの場合:3つの配列M(:) ALAALAASP:....、N(:) ASPGLU ..、O(:) HISHISLYS .. ..
すべてのSEQRESを1つの文字列で作成できましたが、それは私が望んでいたことではありません。
どこかにとを入れif(){}
て確認する必要がM <=> N
ありN <=> O
、違います。次に、文字列を保存して、文字列と配列を開始します。しかし、それは$#seqと同じ文字列を何度も蓄積し続けます。または、1つの位置を移動すると、}
何も保存されません。エラーメッセージが表示されます。これどうやってするの?