[SP-pm] Dúvida com Hash Slices

Blabos de Blebe blabos at gmail.com
Sat Jul 24 21:13:34 PDT 2010


Pense no seguinte:

use strict;
use warnings;
use Data::Dumper;

my %hash;

my @chaves = qw{a b c};
my @valores = qw{1 2 3};

my $chave = 'd';
my $valor = '4';

Singular:
$hash{ $chave } = $valor;

Plural:
@hash{ @chaves } = @valores;

say Dumper(\%hash);

Abraços


2010/7/25 Pinguim Azul <bluepenguin em gmail.com>:
> Você pode usar o ideone para executar pequenos trechos de código:
>
> http://www.ideone.com/
>
> 2010/7/25 Renato Santos <renato.cron em gmail.com>:
>> Estou sem perl no momento (ohh nohh, windows)
>> mas acho que seria assim:
>>    my %quantidade;
>>
>>     my @frutas = qw / bananas laranjas melões /;
>>     my @unidades = qw / 5 10 15 /;
>>     %quantidade{ @frutas } = @unidades;
>> ou
>>     $quantidade{ @frutas } = @unidades;
>>
>>     foreach my $frutas ( @frutas ) {
>>         say "Eu comprei $quantidade{$frutas} $frutas"
>>     }
>> La vai um exemplo:
>> %x = {key=>'value with a key'};
>> $x = 'value of scalar';
>> @x = ('value of array');
>> Todas as variaveis chamam-se "x", porem, para acessar os valores, usar-se
>> meios diferentes.
>> print $x{key}; # value with a key
>> print $x; # value of scalar
>> print $x[0]; # value of array
>>
>> Bom,
>> enquanto escrevo um amigo roda um perl na casa dela via MSN! huasuhas
>> seu codigo rodou no perl 5.8 (trocando apenas o say) e funcionou com $, mas
>> nao com %
>> Eu acho que o jeito mais correto é usar $, pois é a forma correta de
>> escrever/acessar os valores de HASHs.
>>
>>
>> 2010/7/24 "Flávio R. Lopes" <flavio.lopes em links.inf.br>
>>>
>>> Olá pessoal, tudo bem?
>>>
>>> Seguinte, estou tendo certa dificuldade para entender sobre Hash Slices.
>>>
>>> Vi um exemplo de Hash Slices  no livro que estou lendo e tentei montar um
>>> para tentar entender o funcionamento:
>>>
>>>     my %quantidade;
>>>
>>>     my @frutas = qw / bananas laranjas melões /;
>>>     my @unidades = qw / 5 10 15 /;
>>>     @quantidade{ @frutas } = @unidades;
>>>
>>>     foreach my $frutas ( @frutas ) {
>>>         say "Eu comprei $quantidade{$frutas} $frutas"
>>>     }
>>>
>>> Minhas dificuldade são:
>>> 1)
>>> Como o Perl "sabe" que "@quantidade" refere-se ao hash "%quantidade"  ?
>>> Por exemplo, se houvesse um outro array "@quantidade = qw/ 1 2 /"  porque
>>> não causa confusão com "@quantidade{ @frutas } = @unidades" ?
>>>
>>> 2)
>>> Na linha: @quantidade{ @frutas } = @unidades;
>>> ## Posso entender que é aqui que é "montado" o hash "%quantidade"  ?
>>>
>>> Onde:
>>> Para cada chave: @quantidade{ @frutas }
>>> É atribuído um valor: @unidades
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> SaoPaulo-pm mailing list
>>> SaoPaulo-pm em pm.org
>>> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>>
>>
>>
>> --
>> Renato Santos
>> http://www.renatocron.com/blog/
>>
>> _______________________________________________
>> SaoPaulo-pm mailing list
>> SaoPaulo-pm em pm.org
>> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>>
>
>
>
> --
> Ricardo Bittencourt
> http://www.ricbit.com
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm em pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>


More information about the SaoPaulo-pm mailing list