#!/usr/bin/perl @accounts = ("A x1 B y1 C z1 D v1 E w1 F", "A x2 B y2 C zzz2 D v2 E w2 F", "A x3 B y3 C z3 D v3 E w3 F", "A x4 B y4 C z4 D v4 E wwww4 F", "A x5 B y5 C z5 D v5 E w5 F", "A x6 B y6 C z6 D v6 E F"); @fields = ("A", "B", "C", "D", "E"); @fields_plus = ("B", "C", "D", "E", "A"); $end = $#accounts + 1; $end_1 = $#fields + 1; $i = 0; $j =0; $teller = 1; foreach $jump(@accounts) { foreach $test(@fields) { $accounts_2[$j][$i] =~ (/$test(.*?)$fields_plus[$i] /sgm) ; push @accounts_2, ("$teller", "***"); $teller++ ; $i++; if ($fields[$i] == $end_2) {last} } $j++; } for ($j = 0, $j > $end, $j++) { for ($i =0, $i > $end_1, $i++) { print ("$accounts_2[$j][$i]"); } } #### $accounts_2[0][0] = x1 $accounts_2[0][1] = y2 $accounts_2[][] = ... $accounts_2[1][0] = x2 $accounts_2[][] = ... $accounts_2[3][4] = wwww4 $accounts_2[][] = ...