for my $fields (@F) {
@names==@$fields or die "Fields line fields do not match the header names number";
my $id=$fields->[0];
- my($mail_name,$mail_data);
+ my($omail_name,$omail_data);
my($name_last,$name_first);
+ my @mail;
for my $fieldi (1..$#names) {
my $string=$fields->[$fieldi];
next if $string eq "";
} if $first;
}
elsif ($name eq "Other Mail desc.") {
- $mail_name=$string;
+ $omail_name=$string;
}
elsif ($name eq "Other Mail") {
- $mail_data=$string;
+ $omail_data=$string;
}
elsif ($name eq "Mail") {
- $mail_data=$string;
+ push @mail,undef()=>$string;
+ }
+ elsif ($name=~/^Mail [(](.*)[)]$/) {
+ push @mail,$1=>$string;
}
}
my $name=$name_last;
"FIELD"=>"Name",
"FIELD-DATA"=>$name,
} if defined $name;
- push @{$id{$id}{""}},{
- "FIELD"=>"Mail",
- "FIELD-NAME"=>$mail_name,
- "FIELD-DATA"=>$mail_data,
- } if $mail_name||$mail_data;
+ push @mail,$omail_name=>$omail_data if defined $omail_data;
+ while (@mail) {
+ my $name=shift @mail;
+ my $data=shift @mail;
+ push @{$id{$id}{""}},{
+ "FIELD"=>"Mail",
+ "FIELD-NAME"=>$name,
+ "FIELD-DATA"=>$data,
+ };
+ }
}
return map(($id{$_}{""}||()),(sort { ($a<=>$b); } keys(%id)));
}