http://perldoc.perl.org/functions/-X.html
procure por -d e por -e e por .... leia tudo! 2012/11/29 Aureliano Guedes <[email protected]> > So aproveitando a oportunidade. > > Estou brincando com brinquedinhos novos. > Mas ainda não entendi uma coisa. > > Aqui eu quero escrever na tela so o que for documento, não quero o que for > diretorio. > Na unha eu sei fazer, eu quero fazer isso usando o modulo Path::Class. > > Abaixo não esta dando muito certo. > O que errei?? > > use Path::Class; > > my $dir = dir('Parse'); > my $s = $dir->open or die "cant open: $!"; > my @o = $s->read; > foreach my $p (@o){ > if ($p->file){ > print $p; > } > } > > > Date: Thu, 29 Nov 2012 19:52:45 -0200 > > > From: [email protected] > > To: [email protected] > > Subject: Re: [Rio-pm] Chaves de hash > > > > Só para ser chato: > > > > > popular um hash inteiro já com os grupos montados, > > > > popular > > adj. 2 g. > > 1. Relativo ou pertencente ao povo. > > 2. Que é usado ou comum entre o povo. > > 3. Que é do agrado do povo. > > 4. Vulgar, notório. > > 5. Democrático. > > s. m. > > 6. Homem do povo. > > > > povoar - Conjugar > > (povo + -oar) > > v. tr. > > 1. Fundar povoações em. > > 2. Estabelecer habitantes em. > > 3. Disseminar animais para reprodução. > > 4. Dispor grande quantidade de árvores em. > > 5. Dispor grande quantidade de plantas (ex.: povoar o terreno de > > vinha). > > > > >>>6. [Por extensão] Encher com determinada coisa (ex.: a notícia > > >>> povoou a sua vida com alegria). > > > > v. pron. > > 7. Encher-se de habitantes. > > > > > > Em 2012-11-29 19:41, Renato Santos escreveu: > > > Assim, > > > não sei se tem muita diferença na memoria entre um $h e um %s, > > > > > > eu costumo usar $h por habito mesmo, mas poderia ser push > > > @{$h{$grupo}} sem problemas, talvez até @$h{$grupo} funcione certo > > > > > > O 'evitar o loop' q eu digo, é você popular um hash inteiro já com os > > > grupos montados, por exemplo ,se o grupo for a cada 10 numeros reais, > > > voce poderia retornar > > > "-30:-20" como chave para todos os valores de entrada dessa funcao, e > > > popular tudo de uma vez só, no lugar de ler as chaves a cada pergunta > > > de intervalo > > > > > > 2012/11/29 Aureliano Guedes <[email protected]> > > > > > >> Renato, fiquei sem entender, no meu caso não esta fazendo so um > > >> loop? E qual a diferença entre usar um hash %h ou tranformar $h em um > > >> hash?? > > >> Desculpe as perguntas é que não faço nenhum curso ligado a > > >> computação logo as vezes fico "boiando". > > >> > > >> Thiago, segue o script caso tenha também algo a > > >> modificar/acrescentar a nível das minhas péssimas práticas. > > >> > > >> use warnings; > > >> use strict; > > >> use Path::Class; > > >> > > >> #Guardar os valores em um hash acessado pelo valor do mfe > > >> sub h_energy{ > > >> my $data = shift; > > >> my $file = file($data)->openr(); > > >> my %hmfe = (); > > >> my $mirna; > > >> my $record; > > >> > > >> while (my $linha = <$file>) { > > >> if ( $linha =~ m{target:.*} ) { > > >> $record = $linha . $record if ($record); > > >> $hmfe{$mirna} = $record if ($mirna); > > >> $mirna = $+{mirna}; > > >> $record = q() if ($record); > > >> } > > >> elsif ($linha =~ m{mfe:s+(S+)s+kcal/mol}){ > > >> $mirna = $1; > > >> $record .= $linha; > > >> } > > >> else { > > >> $record .= $linha; > > >> } > > >> } > > >> return %hmfe; > > >> } > > >> > > >> sub termofilter{ > > >> my ($data, $min, $max) = @_; > > >> my %d = h_energy($data); > > >> > > >> foreach my $keys (keys %d){ > > >> if($keys >= $min and $keys <= $max){ > > >> print $keys . "n"; > > >> } > > >> } > > >> } > > >> termofilter("hybrid.txt", "-30", "-20"); > > >> > > >>> Date: Thu, 29 Nov 2012 17:27:15 -0200 > > >> > > >>> From: [email protected] > > >>> To: [email protected] > > >> > Subject: Re: [Rio-pm] Chaves de hash > > >>> > > >>> Onde estou agora o firewall bloqueia o pastebin. Pela sua > > >>> explicação, > > >>> verificar por regex seria uma solução segura. O número sera > > >>> convertido > > >>> para um string e, se a sua regex prevê uma margem segura para a > > >> > imprecisão do ponto flutuante na sua aplicação, funciona sem > > >> problemas. > > >>> > > >>> Em 2012-11-29 16:59, Aureliano Guedes escreveu: > > >>> > Nossa, aqui virou uma arena de ideias, da para aprender muita > > >>> coisa > > >> > > so lendo. > > >>> > > > >>> > O problema é o seguinte, eu tenho uma lista nesse formato: > > >>> > > > >>> > target: 01010101 > > >>> > length: 581 > > >>> > miRNA : hsa-miR-15a > > >>> > length: 22 > > >> > > > > >>> > mfe: -24.4 kcal/mol > > >>> > p-value: 0.334111 > > >>> > > > >>> > position 244 > > >>> > target 5' C UCUCCUGUGGUCUCU G U 3' > > >>> > CACA GACCA GUGCUGUU > > >>> > GUGU UUGGU CACGACGA > > >> > > miRNA 3' AAUA U 5' > > >>> > > > >>> > Conforme este arquivo http://pastebin.com/9v6WFUT7 [1] > > >>> > > > >>> > Eu quero filtrar essa lista de acordo com o valor de mfe. > > >> > > > > >>> > Exemplo, se mfe for menor que -30 e maior que -20 esta dentro. > > >>> > > > >>> > Logo fiz da seguinte forma: http://pastebin.com/Dnhv0Zya [2] > > >> > > > > >>> > Funcionou, o problema era sono. Não percebi que a regex estava > > >>> > pegando um espaço. > > >>> > > > >>> > Quanto a usar reais como chave de hash, se eu tiver dois reais > > >>> iguais > > >>> > poderá ser um problema para acessar os valores, > > >> > > mas em toda regra existe sua exceção. > > >>> > > > >>> > No meu caso, o que me importa é que mfe esteja no intervalo > > >>> > determinado. > > >>> > > > >>> > Caso descordem seria uma honra ler a explicação de qualquer um de > > >> > > vocês. > > >>> > > > >>> >> Date: Thu, 29 Nov 2012 16:44:50 -0200 > > >>> >> From: [email protected] > > >>> >> To: [email protected] > > >> > >> Subject: Re: [Rio-pm] Chaves de hash > > >>> >> > > >>> >> Um exemplo mais preciso: > > >>> >> > > >>> >> $ uname -a > > >>> >> SunOS cg01spo 5.10 Generic_138888-03 sun4v sparc > > >> > >> SUNW,SPARC-Enterprise-T5120 > > >>> >> > > >>> >> $ perl -E ' > > >>> >> if (0.2 > 0.19999999999999997){ > > >>> >> say "0.2 is greater than 0.19999999999999997";} > > >> > >> else { > > >>> >> say "Floating Point is not true real"};' > > >>> >> 0.2 is greater than 0.19999999999999997 > > >>> >> $ > > >>> >> > > >>> >> $ perl -E ' > > >> > >> if (0.2 > 0.19999999999999998){ > > >>> >> say "0.2 is greater than 0.19999999999999998";} > > >>> >> else { > > >>> >> say "Floating Point is not true real"};' > > >> > >> Floating Point is not true real > > >>> >> $ > > >>> >> > > >>> >> Por que é importante saber essas coisas? > > >>> >> http://ta.twi.tudelft.nl/users/vuik/wi211/disasters.html [3] > > >> > >> > > >>> >> > > >>> >> > > >>> >> > > >>> >> > > >>> >> > > >>> >> Em 2012-11-29 15:13, [email protected] escreveu: > > >> > >> >> Não se compara reais por igualdade. > > >>> >> > Se você tem erro na igualdade, terá nas outras comparações se > > >>> a > > >>> >> > diferença entre os números for menor que o maior acréscimo > > >> > >> suportado > > >>> >> > pela plataforma: > > >>> >> > > > >>> >> > $ perl -E ' > > >>> >> > if (0.2 > 0.19999999999999999999999999999999999999999999){ > > >>> >> >> say "0.2 is greater than > > >> > >> 0.19999999999999999999999999999999999999";} > > >>> >> >> else { > > >>> >> >> say "Floating Point is not true real"};' > > >>> >> > Floating Point is not true real > > >> > >> > $ > > >>> >> > > > >>> >> > $ perl -E ' > > >>> >> > if (0.2 > 0.199999){ > > >>> >> > say "0.2 is greater than 0.199999";} > > >>> >> > else { > > >> > >> > say "Floating Point is not true real"};' > > >>> >> > 0.2 is greater than 0.199999 > > >>> >> > $ > > >>> >> > > > >>> >> > Então, comparar pontos flutuantes não é seguro. Nem igualdade, > > >>> nem > > >> > >> > maio, nem menor. > > >>> >> > > > >>> >> > E mais: garanto que se você quer usar um número real como > > >>> chave de > > >>> >> > Hash você tem um problema na análise da lógica do problema que > > >> > >> está > > >>> >> > enfrentando e como solucioná-lo. > > >>> >> > > > >>> >> > > > >>> >> > Em 2012-11-29 10:36, Blabos de Blebe escreveu: > > >>> >> >> Na verdade é o contrário, não? > > >> > >> >> > > >>> >> >> Não se compara reais por igualdade. > > >>> >> >> > > >>> >> >> Se você usa reais como chaves de hash, você tem algum > > >>> problema... > > >>> >> >> > > >> > >> >> Ao não controlar a representação interna em ponto flutuante, > > >> você > > >>> >> >> pode > > >>> >> >> nunca mais alcançar o valor relacionado à chave, se usar um > > >>> >> número > > >> > >> >> real como chave, pois qualquer bit diferente, mesmo que > > >>> >> arredondando > > >>> >> >> no mesmo número vai resultar num cálculo diferente na tabela > > >>> >> hash. > > >> > >> >> > > >>> >> >> Igualdade entre númros reais constuma ser definida como algo > > >>> >> assim: > > >>> >> >> > > >>> >> >> sub float_equal { > > >>> >> >> my ($first, $second) = @_; > > >> > >> >> my $threshold = 0.00000001 # arbitrário > > >>> >> >> return abs( $first - $second ) < $threshold; > > >>> >> >> } > > >>> >> >> > > >>> >> >> Converter para string antes de usar como chave de hash também > > >>> não > > >> > >> me > > >>> >> >> parece saudável, pois, embora a string vá funcionar bem no > > >>> hash, > > >>> >> >> você > > >>> >> >> não garante que a conversão vai resultar sempre na mesma > > >>> string, > > >> > >> e > > >>> >> >> aí > > >>> >> >> vc se ferra do mesmo jeito. > > >>> >> >> > > >>> >> >> Por outro lado, se você nunca vai acessar o elemento do hash > > >>> >> através > > >> > >> >> da chave, um foreach por keys() ou values() vai te retornar > > >> os > > >>> >> >> valores... > > >>> >> >> > > >>> >> >> Mas aí eu te perguntaria por que rails você está usando hash > > >>> pra > > >> > >> >> isso... > > >>> >> >> > > >>> >> >> > > >>> >> >> > > >>> >> >> On Thu, Nov 29, 2012 at 6:47 AM, <[email protected]> > > >> > >> wrote: > > >>> >> >>> Existe um problema aqui, diferente da comparação. > > >>> >> >>> A comparação de reais é problemática devido a estrutura > > >>> interna > > >>> >> do > > >>> >> >>> ponto > > >> > >> >>> flutuante. NÃO SE COMPARA REAIS POR MAIOR OU MENOR.Isso não > > >> é do > > >>> >> >>> Perl, mas > > >>> >> >>> das regras de aproximação usada pelos processadores. > > >>> >> >>> > > >> > >> >>> Rounding rules > > >>> >> >>> > > >>> >> >>> The standard defines five rounding rules. The first two > > >>> round to > > >>> >> a > > >>> >> >>> nearest > > >> > >> >>> value; the others are called directed roundings: > > >>> >> >>> Roundings to nearest > > >>> >> >>> > > >>> >> >>> Round to nearest, ties to even – rounds to the nearest > > >>> value; > > >> > >> >>> if the > > >>> >> >>> number falls midway it is rounded to the nearest value with > > >>> an > > >>> >> even > > >>> >> >>> (zero) > > >>> >> >>> least significant bit, which occurs 50% of the time; this is > > >>> the > > >> > >> >>> default for > > >>> >> >>> binary floating-point and the recommended default for > > >>> decimal. > > >>> >> >>> Round to nearest, ties away from zero – rounds to the > > >>> nearest > > >> > >> >>> value; if > > >>> >> >>> the number falls midway it is rounded to the nearest value > > >>> above > > >>> >> >>> (for > > >>> >> >>> positive numbers) or below (for negative numbers); this is > > >> > >> intended > > >>> >> >>> as an > > >>> >> >>> option for decimal floating point. > > >>> >> >>> > > >>> >> >>> Directed roundings > > >>> >> >>> > > >> > >> >>> Round toward 0 – directed rounding towards zero (also known > > >> as > > >>> >> >>> truncation). > > >>> >> >>> Round toward +∞ – directed rounding towards positive > > >>> infinity > > >> > >> >>> (also > > >>> >> >>> known as rounding up or ceiling). > > >>> >> >>> Round toward −∞ – directed rounding towards negative > > >>> infinity > > >>> >> >>> (also > > >> > >> >>> known as rounding down or floor). > > >>> >> >>> > > >>> >> >>> Se a comparação for inevitável, converta o seu número para > > >>> >> string e > > >>> >> >>> compare > > >> > >> >>> ou determine um nível de precisão aceitável e faça bit a > > >> bit. > > >>> >> >>> > > >>> >> >>> Em 2012-11-28 21:42, Aureliano Guedes escreveu: > > >>> >> >>>> > > >> > >> >>>> Ola Monges. > > >>> >> >>>> > > >>> >> >>>> Estou com um problema simples mas que não acho a solução. > > >>> >> >>>> > > >>> >> >>>> Eu tenho um hash onde as chaves são valores numericos reais > > >>> (a > > >> > >> >>>> maioria negativo e quase nenhum inteiro). > > >>> >> >>>> Estou limitando esses valores por um maximo e um minimo. > > >>> >> >>>> > > >>> >> >>>> foreach my $keys (keys %d) { > > >> > >> >>>> if ($keys <= $min and $keys >= $max) { > > >>> >> >>>> print "$d{$keys}"; > > >>> >> >>>> } > > >>> >> >>>> } > > >>> >> >>>> > > >> > >> >>>> Problema que não da certo. > > >>> >> >>>> Ha algo de errado aqui?? > > >>> >> >>>> > > >>> >> >>>> _______________________________________________ > > >> > >> >>>> Rio-pm mailing list > > >>> >> >>>> [email protected] > > >>> >> >>>> http://mail.pm.org/mailman/listinfo/rio-pm [4] > > >> > >> >>> > > >>> >> >>> > > >>> >> >>> _______________________________________________ > > >>> >> >>> Rio-pm mailing list > > >>> >> >>> [email protected] > > >> > >> >>> http://mail.pm.org/mailman/listinfo/rio-pm [4] > > >>> >> >> _______________________________________________ > > >> > >> >> Rio-pm mailing list > > >> > >> >> [email protected] > > >>> >> >> http://mail.pm.org/mailman/listinfo/rio-pm [4] > > >> > >> > > > >>> >> > _______________________________________________ > > >>> >> > Rio-pm mailing list > > >>> >> > [email protected] > > >> > >> > http://mail.pm.org/mailman/listinfo/rio-pm [4] > > >>> >> > > >>> >> _______________________________________________ > > >> > >> Rio-pm mailing list > > >> > >> [email protected] > > >>> >> http://mail.pm.org/mailman/listinfo/rio-pm [4] > > >>> > > > >> > > _______________________________________________ > > >>> > Rio-pm mailing list > > >>> > [email protected] > > >>> > http://mail.pm.org/mailman/listinfo/rio-pm [4] > > >> > > > >>> _______________________________________________ > > >>> Rio-pm mailing list > > >>> [email protected] > > >>> http://mail.pm.org/mailman/listinfo/rio-pm [4] > > >> > > >> _______________________________________________ > > >> Rio-pm mailing list > > >> [email protected] > > >> http://mail.pm.org/mailman/listinfo/rio-pm [4] > > > > > > -- > > > > > > Saravá, > > > Renato CRON > > > > > > http://www.renatocron.com/blog/ [5] > > > @renato_cron [6] > > > > > > > > > Links: > > > ------ > > > [1] http://pastebin.com/9v6WFUT7 > > > [2] http://pastebin.com/Dnhv0Zya > > > [3] http://ta.twi.tudelft.nl/users/vuik/wi211/disasters.html > > > [4] http://mail.pm.org/mailman/listinfo/rio-pm > > > [5] http://www.renatocron.com/blog/ > > > [6] http://twitter.com/#!/renato_cron > > > > > > _______________________________________________ > > > Rio-pm mailing list > > > [email protected] > > > http://mail.pm.org/mailman/listinfo/rio-pm > > > > _______________________________________________ > > Rio-pm mailing list > > [email protected] > > http://mail.pm.org/mailman/listinfo/rio-pm > > _______________________________________________ > Rio-pm mailing list > [email protected] > http://mail.pm.org/mailman/listinfo/rio-pm > -- Saravá, Renato CRON http://www.renatocron.com/blog/ @renato_cron <http://twitter.com/#!/renato_cron>
_______________________________________________ Rio-pm mailing list [email protected] http://mail.pm.org/mailman/listinfo/rio-pm
