Я хочу подсчитать количество вхождений нуклеотидов (буквы «A, T, G, C» в строке). Я пытался использовать для этого оператор tr///
, но он каждый раз возвращает нулевой счетчик в приведенном ниже коде.
Это происходит только в том случае, если я использую переменную внутри оператора tr///
. Если я набираю отдельные буквы отдельно, это работает. Я хотел знать, можем ли мы использовать переменные внутри оператора tr///
для сопоставления с образцом (и подсчета). И если мы можем, кто-нибудь скажет мне, как изменить мой код.
Позже я планирую подсчитать количество кодонов (~64). Отсюда беда. Цените свое время. Спасибо!
#!/usr/bin/perl
use strict;
use warnings;
my $orf = "ATGCTAGCTAGCATAGAGCTAGCTA";
my @atgc = qw(A T G C);
my %hash = ();
foreach my $nt(@atgc) {
$hash{$nt} = ($orf =~ tr/$nt//);
}
tr///
работает посимвольно. Это не поможет вам, когда вы хотите посчитать кодоны. - person Greg Bacon   schedule 14.05.2012