push @{ $data{'digits'} }, 4;
$ data {'digits'} devuelve una matriz-referencia. Coloca @ {} a su alrededor para "desreferenciarlo". Del mismo modo,% {} desreferenciará una referencia hash y $ {} una referencia escalar.
Si tiene que poner algo en una referencia a un hash, es decir
$hashref = { "foo" => "bar" }
Puede utilizar cualquiera:
${ $hashref }{ "foo2" } = "bar2"
o la flecha de la notación:
$hashref->{"foo2"} = "bar2"
En una de cierta manera, piense en una referencia como lo mismo que el nombre de la variable:
push @{ $arrayref }, 4
push @{ "arrayname" }, 4
push @arrayname , 4
De hecho, eso es lo que son "referencias suaves". Si usted no tiene todas las strictnesses encendidos, puede literalmente:
# perl -de 0
DB<1> @a=(1,2,3)
DB<2> $name="a"
DB<3> push @{$name}, 4
DB<4> p @a
1234
Ver [perldoc perldata] (http://perldoc.perl.org/perldata.html) y [perldoc perldsc] (http://perldoc.perl.org/perldsc.html) para obtener información sobre Perl estructuras de datos. – Ether