#!/usr/bin/perl use strict; use warnings; use Win32::OLE; use Win32::OLE::Const 'Microsoft Outlook'; #what properties do we want to get from Outlook? my @properties = ( "Fullname", "PrimaryTelephoneNumber", "BusinessTelephoneNumber", "Business2TelephoneNumber", "BusinessFaxNumber", "HomeTelephoneNumber", "Home2TelephoneNumber", "MobileTelephoneNumber", "OtherFaxNumber", "OtherTelephoneNumber", "Email1Address", "Email1AddressType", "Email2Address", "Email2AddressType" ); #get an Outlook object my $outlook = Win32::OLE->new('Outlook.Application'); unless ($outlook) { my $error = Win32::OLE->LastError(); die "Couldn't start Outlook: $error"; } #get the Contacts folder my $namespace = $outlook->GetNamespace("MAPI"); my $folder = $namespace->GetDefaultFolder(olFolderContacts); my $items = $folder->Items; print "Folder: ", $folder->Name,"\n"; print "Total entries: ",$items->Count,"\n"; #print out the header print join(",",@properties),"\n"; #loop through the items, printing out each one foreach my $index (1..$items->Count) { my $contact = $items->item($index); my @entry; push @entry, $contact->{$_} foreach (@properties); print join(",",@entry),"\n"; };