我有一个类似的文件:
>Sequence1
AAAAASSSSSSSSDDD
BBHSHSJSKJSKJSSS
SJKÑLSDJFSLSLJKS
>Sequence2
AAASSSSSSSSSSDDW
最多55个序列。
我需要将每个序列(例如AAAAASSSSSSSSDDD
)保存到另一个变量中。所以我应该创建尽可能多的变量,因为序列有我的文件。
直到现在我有:
#!/usr/bin/perl
while (<>) {
if (/^>/) {
$count++;
next;
}
}
print $count; #It prints 55.
我该怎么办?我迷失了动态变量......
答案 0 :(得分:3)
作业所需的工具称为 array 。有关文档,请参阅perldata。
my $count = -1;
my @sequences;
while (<>) {
if (/^>/) {
$count++;
} else {
$sequences[$count] .= $_;
}
}
您使用Bio::Perl吗?
答案 1 :(得分:3)
我会使用这样的哈希:
my %sequences;
my $key;
while (<>) {
chomp;
if (/^>(\w+)/) {
$key = $1;
next;
}
$sequences{$key} = $_;
}
最后一句话可能是:
$sequences{$key} .= $_;
您也可以使用数组哈希:
my %sequences;
my $key;
while (<>) {
chomp;
if (/^>(\w+)/) {
$key = $1;
next;
}
push @{$sequences{$key}}, $_;
}
答案 2 :(得分:1)
使用如下数组:
#!/usr/bin/perl
my @sequences;
while (<>) {
if (/^>/) {
$count++;
next;
}
else
{
chomp $_;
push @sequences, $_;
}
}
print $count; #It prints 55.
现在你有一个包含所有序列的数组,有序且全部。