【问题标题】:Loop through strings stored as hash values Perl遍历存储为哈希值的字符串 Perl
【发布时间】:2018-12-21 20:22:28
【问题描述】:

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

%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 

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

【问题讨论】:

标签: perl


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    看看

    perldoc -fsplit
    

    你需要类似的东西

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

    【讨论】:

      【解决方案3】:

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

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

      等等

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-01-16
        • 2022-07-21
        • 2013-12-30
        • 2016-08-20
        • 2011-10-28
        • 1970-01-01
        • 2015-08-26
        • 2012-08-22
        相关资源
        最近更新 更多