From: short <> Date: Sun, 19 Dec 2004 11:47:47 +0000 (+0000) Subject: Fixed handling of multiple e-mails in single CSV row record. X-Git-Tag: bp_lace~10 X-Git-Url: http://git.jankratochvil.net/?p=PerlMail.git;a=commitdiff_plain;h=df645fce9eb005e2b97d9d03e4f6ad97f752d914 Fixed handling of multiple e-mails in single CSV row record. --- diff --git a/PerlMail/Contacts/9210.pm b/PerlMail/Contacts/9210.pm index 6980115..9d7a880 100644 --- a/PerlMail/Contacts/9210.pm +++ b/PerlMail/Contacts/9210.pm @@ -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))); }