Первая ваша структура - hash reference
, а не array
. Вы не можете добавлять значения к Hash
через push
. push
будет работать только на array
. Если вы хотите добавить значение к hash reference
, вам нужно использовать либо ->
обозначение, либо разыменование.
$hash->{ 'key' } = $val; // ->
%{ $hash }{ 'key' } = $val; //dereferencing
Если у вас есть array reference
внутри hash reference
, вы можете получить к нему доступ таким же образом, как указано выше.
$hash->{ 'array key' }->[$index] = $val;
@{ $hash->{ 'array key' }}[$index] = $val;
Что касается создания массива, вы используете (
и )
примерно так
my @array = ( "One", "Two", "Three" );
Другой вариант - использовать ярлык qw()
, например,
my @array = qw(one two three);
Кроме того, вы можете создать массив по ссылке, используя [
и ]
my $array_ref = [ 1, 2, 3 ];
Наконец, чтобы передать значение в массив, который вы используете push
push(@array, $value);
Хотя push-функция контекста списка может быть написана без скобок.
push @array, $value;