2013-10-26 5 views
-1

Предположим, у меня есть 2 массива.Perl: Как вы печатаете содержимое двух массивов, один за другим?

@a1= qw (1, 2, 3); 
@a2= qw (a, b, c); 

Как я могу напечатать элементы из этих массивов следующим образом:

1 a 
2 b 
3 c 

Edit: следует отметить, что ни количество предметов, ни содержание массивов известно.

ответ

2
my @a1 = qw (1 2 3); 
my @a2 = qw (a b c); 
print "$a1[$_] $a2[$_]\n" for 0..$#a1; 

Предполагая, что они одинаковой длины.

+0

Perfect !!! Это прекрасно работало, спасибо! :) –

3

Попробуйте сделать это

use Modern::Perl; 

my @a1 = qw (1 2 3); 
my @a2 = qw (a b c); 
say join " ", ($a1[$_], $a2[$_]) for 0..$#a1; 

(не ставьте , при использовании qw//)

Если вы предпочитаете простой старый стиль:

my @a1 = qw (1 2 3); 
my @a2 = qw (a b c); 
print join(" ", ($a1[$_], $a2[$_])) . "\n" for 0..$#a1; 
+0

Intresting, thanks :) Есть ли способ сделать это без модуля? –

+4

@JackPettersson: ['Modern :: Perl'] (https://metacpan.org/module/Modern::Perl) не требуется. В основном это просто «использует строгие», «использовать предупреждения» и «использовать 5.010» в одном выражении. Вы должны * всегда * добавлять первые два ко всему, что вы пишете. Последнее необходимо здесь, потому что он решил использовать 'say', что удобно, но отнюдь не обязательно: это то же самое, что и' print', но с неявной новой строкой в ​​конце. – Borodin

+0

@JackPettersson: добавлено просто для слишком –

0

Для решения неизвестного размера из массивы, вы можете найти длину массива и в структуре циклов по вашему выбору вы просто распечатываете что-то вроде этого:

//pseudocode 

print(array1[0] + array2[0]); 

Вы можете сделать это до тех пор, пока массивы имеют одинаковую длину.

Смежные вопросы