[Cascavel-pm] Soma
Eden Cardim
edencardim em gmail.com
Segunda Julho 10 12:38:17 PDT 2006
On 7/10/06, Igor Sutton <igor.sutton em gmail.com> wrote:
> Agora que a gente já sabe o que você quer fazer :) Outra opção é transformar
> a sua lista de resultados em um hash:
>
> my @vals = qw(1:2 2:3 3:4);
> my $x = 1;
> my $y = 2;
>
> my %tmp = map { split /:/ } @vals;
> while (my ($k, $v) = each %tmp) {
> $x += $k;
> $y += $v;
> print "$x $y\n";
>
> }
Ô Igor, da forma que você fez, pode ocorrer perda de dados devido à
sobre-escrita de valores que possuem a mesma chave. Se seus valores
forem qw(1:2 1:3 1:4), o loop while só vai executar uma vez.
Eu pensei em usar hash tb mas de forma diferente:
<code>
my %tmp;
@tmp{qw($x $y $z)} = split(/:/, '1:2:3');
no strict 'refs';
$$_ += $tmp{$_} foreach keys %tmp;
use strict 'refs'
</code>
Mais detalhes sobre a lista de discussão Cascavel-pm