【发布时间】:2015-05-14 05:33:30
【问题描述】:
我正在将一维数组转换为多维数组。请参阅下面的代码了解我在做什么。我还在学习 perl,所以想改进我的代码。
我的问题:我可以在一行中进行转换吗?
我认为 Perl 能够做到这一点。编写子程序时可以赋值:
my ($one, $two, $three) = @_;
我的代码:
#!/usr/bin/perl -w
use strict;
use warnings;
use Data::Dumper;
my @oneDim = (
'COL', 'EUR', 'Fruit', 'apple',
'HZP', 'USD', 'Fruit', 'banana',
'HKG', 'USD', 'Food', 'burger',
'IML', 'USD', 'IT', 'keyboard');
# (@fourDim[0],@fourDim[1],@fourDim[2],@fourDim[3]) = @oneDim;
sub main() {
my @fourDim = ([],[],[],[]);
for (my $i = 0; 4 * $i + 3 < scalar(@oneDim); ++$i)
{
push @{$fourDim[0]}, $oneDim[$i * 4 + 0];
push @{$fourDim[1]}, $oneDim[$i * 4 + 1];
push @{$fourDim[2]}, $oneDim[$i * 4 + 2];
push @{$fourDim[3]}, $oneDim[$i * 4 + 3];
}
print Dumper @fourDim;
}
main();
结果如下:
$VAR1 = [
'COL',
'HZP',
'HKG',
'IML'
];
$VAR2 = [
'EUR',
'USD',
'USD',
'USD'
];
$VAR3 = [
'Fruit',
'Fruit',
'Food',
'IT'
];
$VAR4 = [
'apple',
'banana',
'burger',
'keyboard'
];
我在这里找到了反向转换: https://stackoverflow.com/a/8611430/2764334
但我找不到将一维数组转换为多维数组的优雅方法。就我而言,我知道总是有相同的订单(代码、货币、类型、产品)
【问题讨论】:
标签: arrays perl multidimensional-array