10
votes

Comment puis-je appuyer sur un élément dans une référence de matrice détenue comme une valeur de hachage?

%data = (
    'digits' => [1, 2, 3],
    'letters' => ['a', 'b', 'c']
);
How can I push '4' into $data{'digits'}?I am new to Perl. Those $, @, % symbols look weird to me; I come from a PHP background.

1 commentaires

Voir Perldoc Perldata et Perldoc Perldsc pour des informations sur les structures de données PERL.


4 Réponses :


15
votes
# perl -de 0
  DB<1> @a=(1,2,3)
  DB<2> $name="a"
  DB<3> push @{$name}, 4
  DB<4> p @a
1234

1 commentaires

Une référence non dure est une référence symbolique.



3
votes
push @{data{'digits'}}, 4;
The @{} makes an array from a reference (data{'digits'} returns an array reference.)  Then we use the array we got to push the value 4 onto the array in the hash.This link helps explain it a little bit.I use this link for any questions about hashes in Perl.

0 commentaires

1
votes
push @{ $data{digits} }, 4;
The official Perl documentation website has a good tutorial on data structures: perldsc, particularly the Hashes-of-Arrays section.$, @ and % are known as sigils.

0 commentaires

2
votes

Pour une option exotique mais très agréable à l'oeil, jetez un coup d'œil au autobox :: core code> module CPAN.

use autobox::Core;

my %data = (
    digits  => [1, 2, 3],
    letters => ['a', 'b', 'c'],
);

$data{digits}->push(4);

$data{digits}->say;   # => 1 2 3 4


0 commentaires