You could read your data into a hash table to make things a
little easier on yourself, I think:
use warnings;
use strict;
use Data::Dumper;
my @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");
my %fields = map { $_ => 1 } qw/A B C D E F/;
my $cur_field;
my %hash;
foreach ( @accounts ) {
foreach ( split ) {
$cur_field = $_ if exists $fields{$_};
push @{$hash{$cur_field}}, $_
if $_ ne $cur_field;
}
}
print Dumper \%hash;
__END__
$VAR1 = {
'A' => [
'x1',
'x2',
'x3',
'x4',
'x5',
'x6'
],
'B' => [
'y1',
'y2',
'y3',
'y4',
'y5',
'y6'
],
'C' => [
'z1',
'zzz2',
'z3',
'z4',
'z5',
'z6'
],
'D' => [
'v1',
'v2',
'v3',
'v4',
'v5',
'v6'
],
'E' => [
'w1',
'w2',
'w3',
'wwww4',
'w5'
]
};