2014-08-08 4 views
2

У меня есть массив как этотPERL: Как создать таблицу из массива?

@array = ( 
      1, 
      some 9-digit number-1, 
      some 9-digit number-2, 
      2, 
      some 9-digit number-3, 
      some 9-digit number-4 
      .....and so on 
); 

Теперь я хочу, чтобы напечатать это в таблице, как

1 some 9-digit number-1 some 9-digit number-2 
2 some 9-digit number-3 some 9-digit number-4 
3 some 9-digit number-5 some 9-digit number-6 

Я также хочу, чтобы напечатать таблицу в текстовый файл. Какая логика была бы лучшей?

Thanks

+0

Я понял это. Я использовал Text :: Table Спасибо –

+2

Вы должны написать ответ на свой вопрос, показывая, как вы его решили. Это поможет будущим посетителям, которые имеют тот же вопрос. – ThisSuitIsBlackNot

+0

использовать Текст :: Таблица; my $ tb = Текст :: Таблица -> новый ("Заголовок 1", "Заголовок 2", Заголовок 3 "); для (my $ i = 0; $ i <= $ # array; $ i = $ i + 3) { $ tb -> load ([array [$ i], array [$ i + 1], array [$ i + 2]]);} print $ tb; –

ответ

2

Я понял. Я использовал Text::Table Спасибо - John F

use Text::Table; 
my $tb = Text::Table->new("Heading 1", "Heading 2" , "Heading 3"); 

for (my $i = 0; $i <= $#array; $i += 3) { 
    $tb->load([@array[$i, $i+1, $i+2]]); 
} 

print $tb; 
1

модуль не является действительно необходимым для этой простой задачи.

Альтернативное решение, использующее только splice и printf.

use strict; 
use warnings; 

my @array = ( 
    1, 999999991, 999999992, 
    2, 999999993, 999999994, 
    3, 999999995, 999999996, 
); 

while (@array >= 3) { 
    printf "%-4s %-10s %s\n", splice @array, 0, 3; 
} 

выход

1 999999991 999999992 
2 999999993 999999994 
3 999999995 999999996 
+0

Awesome: D Спасибо :) –

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