循环访问存储为哈希值 Perl 的字符串



我创建了一个具有以下键:值结构的哈希。

%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//;

等。

最新更新