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.silve...@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@pm.org > L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> > =end disclaimer > >
=begin disclaimer Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ SaoPaulo-pm mailing list: SaoPaulo-pm@pm.org L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> =end disclaimer