#! /usr/bin/perl # # $Id$ use vars qw($VERSION); $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; }; use strict; use warnings; require Getopt::Long; require PrecislovaniLace::Contacts; require Mail::Address; Getopt::Long::Configure( "no_ignorecase", "bundling", ); die if !Getopt::Long::GetOptions( ); undef $/; while (<>) { my @data=map({ my @record=@$_; my %record; map({ my %item=%$_; $record{$item{"FIELD"}}=$item{"FIELD-DATA"}; ($item{"FIELD"} ne "Mail" || !$item{"FIELD-DATA"} ? () : ({ "name"=>$record{"Name"}, "mail"=>$item{"FIELD-DATA"}, "attr"=>$item{"FIELD-NAME"}, "iscompany"=>($record{"Name"} && $record{"Company"} && $record{"Name"} eq $record{"Company"}), })); } @record); } PrecislovaniLace::Contacts->import($_)); my @nicked=map({ my $data=$_; my($name,$mail,$attr,$iscompany)=map(($data->{$_}),qw(name mail attr iscompany)); $name=~s/,.*$//s; my @nicks=(); push @nicks,$1 while $name=~s/"([^"]*)"//s; $name=~s/\s*$//s; $name=~s/^(\w+)\s+(\w+)$/$2 $1/s if !$iscompany; push @nicks,$name; for (@nicks) { $_.=".$attr" if $attr; s/\s+/./gs; } map({ "nick"=>$_, "obj"=>Mail::Address->new($name,$mail), },@nicks); } @data); for (@nicked) { print "alias ".$_->{"nick"}." ".$_->{"obj"}->format()."\n"; } }