如何在 Perl 中停止数组排序
How to stop array sort in Perl
我知道这是 Perl 中的一个非常基本的问题,所以我无法在任何地方找到解决方案。
我正在使用 Perl 包 Text::ASCIITable 来美化输出。
下面是我的代码,我在其中使用数组构造 table 行。
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 |
'-----+-----+-------+------'
问题是,table 行正在打乱,它与 table header 不匹配。因为给定的输入数组自行排序让我很烦。
那么如何阻止Perl对数组进行排序呢?我只想得到结果。
如有任何帮助,我们将不胜感激。
它没有被排序。恰恰相反,问题是您没有对这些值进行排序。固定:
my @field_names = qw( one two three four );
$t->setCols(@field_names);
for my $val ( @output ) {
push @$t, @$val{@field_names};
}
我知道这是 Perl 中的一个非常基本的问题,所以我无法在任何地方找到解决方案。
我正在使用 Perl 包 Text::ASCIITable 来美化输出。
下面是我的代码,我在其中使用数组构造 table 行。
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 |
'-----+-----+-------+------'
问题是,table 行正在打乱,它与 table header 不匹配。因为给定的输入数组自行排序让我很烦。
那么如何阻止Perl对数组进行排序呢?我只想得到结果。
如有任何帮助,我们将不胜感激。
它没有被排序。恰恰相反,问题是您没有对这些值进行排序。固定:
my @field_names = qw( one two three four );
$t->setCols(@field_names);
for my $val ( @output ) {
push @$t, @$val{@field_names};
}