Как вставить значение в хэш Perl массивов?
%TEST ;
...
for {
sub atest
}
sub atest {
...
push $TEST { TEST1 }[0] = "some value "
}
Как вставить значения в хэш массивов, ничего не зная об индексе?
как этого достичь?
3 ответов
Это добавит значение в конец массива, хранящегося в хэше ключом "TEST1".
push( @{ $TEST { TEST1 } }, "some value ");
я использовал @{...}
ссылка на массив разыменования. Perl автоматически создает ссылку на внутренний массив.
на push
функция принимает массив, поэтому вы должны уважать его обратно в массив:
push @{$TEST{TEST1}}, "some value";
кроме того, ваш стиль заставляет меня думать, что вы не используете strict
ПРАГМА. Лучший способ написать этот код:
#!/usr/bin/perl
use strict;
use warnings;
sub atest {
my $test = shift;
push @{$test->{TEST1}}, "some value";
}
my %test;
atest(\%test);
use Data::Dumper;
print Dumper \%test;
Я думаю, что вы хотите:
%TEST;
$TEST{TEST1}[0] = "some value"
push @{ $TEST{TEST1} }, "some other value"
теперь $TEST{TEST1} должен быть эквивалентен ["some value", "some other value"]
.