2016-09-07 3 views
-2

Я знал, что это очень простой вопрос в Perl, поэтому я не мог найти решение для этого в любом месте.Как остановить сортировку массива в Perl

Я использую пакет Perl Text::ASCIITable, чтобы украсить выход.

Ниже приведен мой код, где я строю таблицу с использованием массива.

my @output = [ 
    { 
     one => "1", 
     two => "2", 
     three => "3", 
     four => "4",   
    }, 
    { 
     one => "1", 
     two => "2", 
     three => "3", 
     four => "4",  
    } 
]; 

my $t = Text::ASCIITable->new(); 

# Table header values as static. 
$t->setCols('one','two','three','four'); 

foreach my $val (@output) { 
    my @v = values $val; 
    push @$t, @v; 
} 

print $t; 

Это дает мне выход, как показано ниже

.-----+-----+-------+------. 
| one | two | three | four | 
|=----+-----+-------+-----=| 
| 1 | 2 | 3  | 4 | 
| 2 | 4 | 3  | 1 | 
'-----+-----+-------+------' 

Проблема, строка таблицы становится перемешиваются, и он не совпадает с заголовком таблицы. Потому что данный массив ввода сортирует себя, что делает меня раздражающим.

Итак, как остановить Perl для сортировки массива? Я просто хочу получить результат как есть.

Любая помощь будет оценена в значительной степени.

+2

Я вообще не понимаю ваш вопрос. Можете ли вы опубликовать [MCVE] (http://stackoverflow.com/help/mcve)? – melpomene

+1

Пожалуйста, покажите содержимое '@ output' (первые несколько строк), вывод' print $ t; 'и ваш желаемый результат. – PerlDuck

+0

Отредактировал мой вопрос. Пожалуйста, совет. – Raja

ответ

2

Это не сортировка. Напротив, проблема в том, что вы не сделали. Исправлено:

my @field_names = qw(one two three four); 

$t->setCols(@field_names); 

for my $val (@output) { 
    push @$t, @$val{@field_names}; 
} 
+0

Вау! Спасибо :) – Raja

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

  • Нет связанных вопросов^_^