Perl-программа не работает

Я написал программу на Perl, чтобы найти процентное содержание GC в данной строке ДНК. Но программа выполняет ситуацию с ошибкой (другая часть условного оператора)

$dna = "AGTC";
$a = 0;
$g = 0;
$t = 0;
$c = 0;

for ($p = 0; p < length $dna; ++$p) {
    $ch = substr($dna,$p,1);
    if($ch eq 'A') {
            ++$a;
    } elsif($ch eq 'G') {
            ++$g;
    } elsif($ch eq 'T') {
            ++$t;
    } elsif($ch eq 'C') {
            ++$c;
    } else {
            print "error";
    }
}
$total = $a + $g + $t + $c;
$gc = $g + $c;
$percentagegc = ($gc/$total) * 100;
print "percentage gc content is = $percentagegc";

Пожалуйста помоги.


person Community    schedule 06.03.2014    source источник
comment
Отсутствует $ для p в операторе for.   -  person GoinOff    schedule 06.03.2014
comment
Если бы вы добавили use:strict в свою программу и объявили все свои переменные с ключевым словом my, вы бы получили это предупреждение при запуске вашей программы: Bareword "p" not allowed while "strict subs" in use at temp.pl line 33.   -  person Carl Anderson    schedule 06.03.2014


Ответы (1)


Вам не хватает $ в одном из случаев использования $p в этой строке:

for($p = 0;p < length $dna;++$p)
           ^ -- here

Исправив это и запустив ваш скрипт, я правильно получаю:

percentage gc content is = 50
person sartak    schedule 06.03.2014