Fixed handling of multiple e-mails in single CSV row record.
authorshort <>
Sun, 19 Dec 2004 11:47:47 +0000 (11:47 +0000)
committershort <>
Sun, 19 Dec 2004 11:47:47 +0000 (11:47 +0000)
PerlMail/Contacts/9210.pm

index 6980115..9d7a880 100644 (file)
@@ -73,8 +73,9 @@ my($self,$data)=@_;
        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 "";
@@ -97,13 +98,16 @@ my($self,$data)=@_;
                                                } 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;
@@ -112,11 +116,16 @@ my($self,$data)=@_;
                                "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)));
 }