[Rio-pm] Chaves de hash

Renato Santos renato.cron em gmail.com
Quinta Novembro 29 18:52:19 PST 2012


pronto, na 51 eu respondo!

2012/11/30 Aureliano Guedes <guedes_1000 em hotmail.com>

>  Bruno, no meu if funcionou tanto com && quanto com and. O meu erro mesmo
> foi que a regex pegava um espasso.
>
 pois é, vai funcionar!
#no more comments

> Bem a minha duvida ficou em "porque seria problematico colocar reais em
> chaves de hash no meu caso?"
>
tenho quase certeza que, como já foi removido de um texto, o numero real em
questão, seja apenas um scalar, sem a flag de 'real' (se é existe essa flag
internamente),

portanto, você pode colocar qualquer coisa nas chaves de um hash sem
problema

(to em duvida se existe algum byte especial que é usado para separar as
chaves internamente, esse valor fica em uma das variaveis magicas)


>
> Se eu fosse pesquisar um valor especifico e tivesse duas ou mais chaves
> com o mesmo valor real seria problema
>
você tem que pesquisar exatamente o valor desejado, mas não tem problema
pois você esta percorrendo todas as chaves

> mas no meu caso *i*mporta que o valor estej*e *em um determinado
> intervalo, podem ter 20 chaves iguais, estando no intervalo
> eu quero os 20 valores. 49??
>
que? 20 chaves iguais não pode!


voltando a que eu respondi no email via celular, eu faria o codigo de outra
forma,
se for possivel e os intervalos forem já predetermindados:
no lugar de
$hmfe{$mirna} = $record if ($mirna);
eu já montaria ( fill, populate, do the inserts ) o hash com as chaves já
sendo o intervalo, calculado por uma funcao (que eu chameria de filtro)

push(@{$hmfe{determina_intervalo($mirna)}, $record} if ($mirna);

$truncate = 1000; # isso transforma -0.123456789 em -0.123 e desconsidera o
que estiver na frente do 3. o round-up transformaria em 0.12*4*
*
*
sub determina_intervalo {
my $valor = shift;
# isso so faz o truncate
$valor = int ($valor * $truncate) / $truncate;

# depois separa em grupos de 200:
$valor *= 1000;
return int($valor/200)*200; # isso retorna só '200' que ja vale, mas
poderia ser tambem:

my $tmp = int($valor/200)*200;
retrun "$tmp:".$tmp+200 # que vai retornar '-400:-200' que
}

e assim o valor da chave do intervalo já contem todos os registros daquele
intervalo, nem de if precisa!

perl -E 'sub a{my $x = shift() * 1000; $x = int($x/200)*200; $x}; say a
-0.12; say a -0.23; say a -0.25; say a -0.26; say a -5; say a -0.29; say a
-0.5; say a -0.71'
0
-200
-200
-200
-5000
-200
-400
-600



> ------------------------------
> From: leonardo.balter em gmail.com
> Date: Fri, 30 Nov 2012 00:15:50 -0200
>
> To: rio-pm em pm.org
> Subject: Re: [Rio-pm] Chaves de hash
>
> Quero participar dessa discussao antes do 50.
>
> Por que tanta peculiariade na dicotomia  de popular?
>
> Na buzilis da cizania ja nao era mais sobre Perl ou foi impressao minha?
>
>
> Leo Balter - via mobile
>
> Em 30/11/2012, às 00:02, Marcio Ferreira <marciodesouzaferreira em gmail.com>
> escreveu:
>
> 47
> On Nov 29, 2012 11:35 PM, "Renato Santos" <renato.cron em gmail.com> wrote:
>
> #define float_epsilon 0.00001;#define float_equal(a,b) (fabs((a) - (b)) < float_epsilon)
>
> *BTW*
>
> 2012/11/29 Blabos de Blebe <blabos em gmail.com>
>
> float_equal
>
>
>
>
> --
> Saravá,
> Renato CRON
> http://www.renatocron.com/blog/
> @renato_cron <http://twitter.com/#%21/renato_cron>
>
>
> _______________________________________________
> Rio-pm mailing list
> Rio-pm em pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm
>
> _______________________________________________
> Rio-pm mailing list
> Rio-pm em pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm
>
>
> _______________________________________________ Rio-pm mailing list
> Rio-pm em pm.org http://mail.pm.org/mailman/listinfo/rio-pm
>
> _______________________________________________
> Rio-pm mailing list
> Rio-pm em pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm
>



-- 
Saravá,
Renato CRON
http://www.renatocron.com/blog/
@renato_cron <http://twitter.com/#!/renato_cron>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/rio-pm/attachments/20121130/e451382c/attachment.html>


Mais detalhes sobre a lista de discussão Rio-pm