Перебирать строки, хранящиеся в виде хеш-значений Perl - PullRequest
0 голосов
/ 21 декабря 2018

Я создал хеш со следующим ключом: структура значений.

%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";
    }
}

, но вместопечатая такие значения для sequence1 в print "$nucl\n";

A
C
C
G
T
G

, это вывод на печать, например

ACCGTG 

Нужно ли преобразовывать значения в массив, а затем выполнять итерацию по массиву или Iможно перебрать строки и распечатать отдельный элемент строки?

Ответы [ 3 ]

0 голосов
/ 21 декабря 2018

Взгляните на

perldoc -fsplit

Вам нужно что-то вроде

print join("\n", split('',$value));
0 голосов
/ 22 декабря 2018

Если вы просто хотите считать символы , вам не нужно ничего делить:

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

и т. Д.

0 голосов
/ 21 декабря 2018

Похоже, вы хотите преобразовать строку в список отдельных символов.Функция split с пустым шаблоном выполнит это преобразование.

...
my @chars = split //, $value;
foreach my $nucl (@chars) {
    print "$nucl\n";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...