скриптик Perl

Fake_queen

Написал небольшой скриптик на perl:
 
 open (FI, "2.txt");
foreach $string (<FI>) {
$a = ($string =~ tr/C//);
$b = ($string =~ tr/G//);
$c = $a + $b;
$len = length($string);
$d = $c/$len;
print $string, " ", $d, "\n\n";
}

Т.е. он по идее должен подсчитывать процент (G+C) в словах. Но на выходе получается:
 
 CGA
 0.5
GGGCCCAAAAAA
 0.461538461538462
GGCCAAATTT
 0.363636363636364
CA
 0.333333333333333
GA 0.5

, что, есс-но, не правильно. Что-то не пойму - в чем дело?

stm7583298

а chomp($string) кто делать будет?

Fake_queen

Спасибо, помогло

stm7583298

Да и написать это можно сильно короче:

open (FI, "2.txt");
foreach (<FI>) {
     chomp($_);
     $len=length($_);
     $d = (tr/[GC]//)/$len;
     print $_, " ", $d, "\n\n";
     }

Fake_queen

Да, так еще лучше...
Но я только учусь

artimon

Можно ещё короче
open FI, "2.txt";
foreach (<FI>) {
chomp;
$len=length;
$d = (tr/[GC]//)/$len;
print $_, " ", $d, "\n\n";
}

stm7583298

да, действительно

Fake_queen

Вот еще немного укоротил..
 open FI, "2.txt";
foreach (<FI>) {
chomp;
$len=length;
$d = (tr/[GC]//)/$len;
print $_, " ", $d, "\n";
}

Anturag

Ыыы
#!/usr/bin/perl
open FI, "2.txt";
foreach (<FI>)
{
chomp;
print $_." ".(tr/[GC]//)/length."\n";
}
close FI;

Бойтесь деления ни на что!

stm7583298

Ибо нефиг вычислять длину после tr
Тогда уж писать (tr/[GC]/N/)/length

Anturag


Только не надо пороть хуйни в столь ответственный момент!
PS это к обоим постам
Оставить комментарий
Имя или ник:
Комментарий: