我创建了一个具有以下键:值结构的哈希。
%multifasta = ('sequence1', ACCGTG, 'sequence2' , AGTCGTAGC, 'sequence3' , AGTCGCTAGCATAGCA)
其中,ACGT 字符串存储为哈希值,序列号存储为哈希键。
我想遍历存储为哈希值的字符串,以计算 A、C、G 和 T 核苷酸的数量。
我尝试的是:
while(my($key, $value) = each %multifasta){
print "$keyn";
my $len = length($value);
my $nucl;
foreach $nucl($value){
print "$nucln";
}
}
但是,而不是在print "$nucln";
中为 sequence1 打印这样的值
A
C
C
G
T
G
它是打印输出,如
ACCGTG
我是否需要将值转换为数组,然后遍历数组,或者我可以遍历字符串并打印字符串的单个元素?
看起来您想将字符串转换为单个字符的列表。 具有空模式的 split
函数将执行此转换。
...
my @chars = split //, $value;
foreach my $nucl (@chars) {
print "$nucln";
}
看看
perldoc -fsplit
你需要类似的东西
print join("n", split('',$value));
如果您只想计算字符数,则无需拆分任何内容:
my $a_count = $value =~ tr/A//;
my $c_count = $value =~ tr/C//;
等。