отправить массив ссылок на любое количество хэшей [perl] - PullRequest
0 голосов
/ 26 сентября 2011

Предположим, у меня есть массив:

@array = {
'A'    =>    "",
'B'    =>    0,
'C'    =>    0,
'D'    =>    0,
};

. Я могу добавить элемент:добавить элементы в @array, используя push?

1 Ответ

4 голосов
/ 26 сентября 2011

Первая ваша структура - 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...