Perl:数组拆分和复杂合并

时间:2015-02-02 23:45:11

标签: arrays perl merge

我有以下字符串A B C D E F G H I J。我想用它制作一个数组,所以我用这个

my @string = split/(\W)/, $text;

它工作正常,我得到一个20行的数组:

A

B

C

D

...

现在,我想将这个数组拆分成给定数量的碎片(在这种情况下假设为4),因此我想到4个较小的数组,每行5行,看起来像这样@ 1 = A, ,B, ,C ,@ 2 = ,D, ,E,,@ 3 = F, ,G, ,H和@ 4 = ,I, ,J,。 最后,我想交错这4个数组,以获得一个输出数组,其中我首先得到每个数组的第一行,每个数组的第二行,依此类推......最后看起来像这样:< / p>

A

F


D

I
B

G


E

J
C

H

如何实现这一目标?

1 个答案:

答案 0 :(得分:0)

  1. 在Perl中创建一个数组:

    my @oldArray = (a, ,b, ,c, ,d, ,e, ,f, ,g, h, ,i, ,j, );
    
    my @newArray1 = @oldArray[elemIndex1,elemIndex2,elemIndexN];
    

    OR

    my @newArray1 = @oldArray[firstElemIndex..lastElemIndex]
    

    elemIndexnewArray数组中所需元素的索引。

    如果希望连续索引位于切片数组中,则使用

    firstElemIndex..lastElemIndex

  2. 要在数组末尾添加元素:

    push(@interleavedArray,$newArray1[elemIndex]);
    

    $newArray1[elemIndex]@newArray1中要添加到@interleavedArray的元素

  3. 按顺序添加元素:

    只需做一个for循环:

    for my $index (0..3){
        push(@interleavedArray,$newArray1[$index]);
        push(@interleavedArray,$newArray2[$index]);
        push(@interleavedArray,$newArray3[$index]);
        push(@interleavedArray,$newArray4[$index]);
        }