[SP-pm] Dúvida com Hash Slices
Eden Cardim
edencardim at gmail.com
Sun Jul 25 08:26:28 PDT 2010
>>>>> "Thiago" == Thiago Glauco Sanchez <thiagoglauco em ticursos.net> writes:
Thiago> O perl sabe que vc se refere a um hash pelas chaves { } e a um array
Thiago> pelos ( ). Os { } indicam que são chves de um hash e ( )
Thiago> indicam que são elementos de um array. Acho que era esta a
Thiago> sua pergunta?
Na verdade, os parênteses são apenas para forçar precedência e não tem
relação alguma com tipos de dados. Perl faz a diferenciação entre
referências para arrays e hashes pela presença de '{}' ou '[]' como indexador:
@{$array}[1, 2, 3] = qw(foo bar baz);
@{$hash}{qw(foo bar baz)} = qw(quux moin meep);
O mesmo vale para construção de arrays e hashes anônimos:
my $array = ['foo', 'bar', 'baz'];
my $hash = {'foo', 'quux', 'bar', 'moin', 'baz', 'meep'}
Listas são construídas pelo operador ',', que tem precedência menor que
o operador '=', então, no caso de:
@foo = (1, 2, 3);
Os parênteses estão sendo usados para forçar a construção da lista antes
da atribuição. Se fosse:
@foo = 1, 2, 3;
O resultado seria um array contendo o elemento "1" e uma lista contendo
1, 2, 3 retornada em contexto void.
More information about the SaoPaulo-pm
mailing list