[SP-pm] Melhor forma para...

Tiago Peczenyj tiago.peczenyj at gmail.com
Mon Jul 15 14:17:32 PDT 2013


sempre tem.

1 crie um hash com as letras A C G T como chave e 0 como valor

%x = ( A => 0, ... );

2. faca um loop sobre as chaves

for my $letter (keys %x){
}

3. dentro substitua $letter pelo q vc quer.

to no celular... por isso ta ruim de dar um exemplo claro.
Em 15/07/2013 18:06, "Rafael Silveira" <dev.silveira at yahoo.com> escreveu:

> Boa noite mongers.
>
> Graças a sugestão do nosso amigo Felipe Leprevost, entrei no roseland.infoe comecei a brincar.
>
> O primeiro problema foi contar o número de ocorrencias numa string.
>
> Eis o código que eu utilizei.
>
> #!/usr/bin/env perl
>
> use strict;
> use warnings;
>
> open IFILE, '<', '../../data/string/counting.txt' or die('File not found');
>
> my @nucleotides = qw(0 0 0 0);
>
> while (my $line = <IFILE>) {
>   chomp $line;
>
>   $nucleotides[0] += ($line =~ tr/A/g/);
>   $nucleotides[1] += ($line =~ tr/C/g/);
>   $nucleotides[2] += ($line =~ tr/G/g/);
>   $nucleotides[3] += ($line =~ tr/T/g/);
> }
> close IFILE;
>
> open OFILE, '>', '../../output/string/counting.txt' or die('Can\'t create file');
> print OFILE join(" ", @nucleotides);
> close OFILE;
>
> O problema é que não estou satisfeito com o código na hora que eu somo o numero do ocorrencias nos indices da array:
>
>   $nucleotides[0] += ($line =~ tr/A/g/);
>   $nucleotides[1] += ($line =~ tr/C/g/);
>   $nucleotides[2] += ($line =~ tr/G/g/);
>   $nucleotides[3] += ($line =~ tr/T/g/);
>
> Existe uma forma melhor para fazer isso em uma linha?
>
> []'s
>
>
> =begin disclaimer
>    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>  SaoPaulo-pm mailing list: SaoPaulo-pm at pm.org
>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20130715/bc7080be/attachment-0001.html>


More information about the SaoPaulo-pm mailing list