遍历存储为哈希值的字符串Perl

时间:2018-12-21 20:22:28

标签: perl

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

%multifasta = ('sequence1', ACCGTG, 'sequence2' , AGTCGTAGC, 'sequence3' , AGTCGCTAGCATAGCA)

其中ACGT字符串存储为哈希值,序列号存储为哈希键。

我想遍历存储为哈希值的字符串以计算A,C,G和T核苷酸的数量。

我尝试的是:

while(my($key, $value) = each %multifasta){
    print "$key\n";
    my $len = length($value);
    my $nucl;
    foreach $nucl($value){
        print "$nucl\n";
    }
}

但是,不要在print "$nucl\n";

中为sequence1打印这样的值
A
C
C
G
T
G

它像打印输出一样

ACCGTG 

我是否需要将值转换为数组,然后遍历数组,还是可以遍历字符串并打印字符串的单个元素?

3 个答案:

答案 0 :(得分:3)

您似乎想将字符串转换为单个字符列表。具有空白模式的split函数将执行此转换。

...
my @chars = split //, $value;
foreach my $nucl (@chars) {
    print "$nucl\n";
}

答案 1 :(得分:2)

看看

perldoc -fsplit

您需要类似

print join("\n", split('',$value));

答案 2 :(得分:1)

如果您只想count characters,则无需拆分任何内容:

my $a_count = $value =~ tr/A//;
my $c_count = $value =~ tr/C//;