Вы, вероятно, хотите хэш (обозначенный в %
сигилах, что имя Perl для ассоциативного массива (коллекция со строками в качестве ключей)). Если это так, вам поможет один из четырех ответов. Если вы на самом деле хотели массив для какой-то причины (если ваши данные могут иметь несколько ключей с тем же именем, или если вам нужно сохранить порядок данных), вы можете использовать один из следующих способов:
my @test = (
mobilephone => [qw(sony htc)],
pc' => [qw(dell apple)]
);
с для цикла:
for (0 .. $#test/2) {
if ($test[$_*2] eq 'mobilephone') {
print "$test[$_*2]: @{$test[$_*2+1]}\n"
}
}
с использованием модуля:
use List::Gen 'every';
for (every 2 => @test) {
if ($$_[0] eq 'mobilephone') {
print "$$_[0]: @{$$_[1]}\n"
}
}
другой способ:
use List::Gen 'mapn';
mapn {
print "$_: @{$_[1]}\n" if $_ eq 'mobilephone'
} 2 => @test;
методами:
use List::Gen 'by';
(by 2 => @test)
->grep(sub {$$_[0] eq 'mobilephone'})
->map(sub {"$$_[0]: @{$$_[1]}"})
->say;
Каждый блок печатает mobilephone: sony htc
Отказ от ответственности: я написал List::Gen.
Может быть, хэш лучше для этого? http://www.tizag.com/perlT/perlhashes.php – itdoesntwork
Пожалуйста, не связывайтесь с учебником Perl tiztag. Это довольно старый и неприятный код. Вместо этого попробуйте http://learn.perl.org или быстро развивающийся учебник Gabor по адресу http: // szabgab.ком/perl_tutorial.html. –