1WARNING 2 3 - THIS MODULE WILL BE REPLACED IN A NUMBER OF DAYS BY Text::vCard 4 - Text::vCard is a joint effort between myself and another developer 5 - It will support a better API, more robust treatment of vCard data 6 and even writing of vCards 7 8Thanks. 9 10 Jay 11 12 13NAME 14 Net::vCard - Read and write vCard files (RFC 2426). vCard files hold 15 personal information that you would typically find on a business card. 16 Name, numbers, addresses, and even logos. This module can also serve as 17 a base class for other vFile readers. 18 19SYNOPSIS 20 use Net::vCard; 21 22 my $cards=Net::vCard->loadFile( "addresses.vcf" ); 23 24 foreach my $card ( @$cards ) { 25 26 print $card->givenName, " ", $card->familyName, "\n"; 27 print $card->ADR->address, "\n"; 28 print $card->ADR->city, " ", $card->ADR->region, "\n"; 29 print $card->ADR->postalCode, "\n"; 30 31 print $card->ADR("home")->address, "\n"; 32 print $card->ADR("home")->city, " ", $card->ADR("home")->region, "\n"; 33 print $card->ADR("home")->postalCode, "\n"; 34 35 } 36 37MODULE STATUS 38 The current state of this module is a pretty solid parser and internal 39 data structure. 40 41 Now I will be adding get/set handlers for the various properties. As 42 well, I'd really like to get some pathelogical data from different vCard 43 producers. Right now I have a pretty good handle on Apple's Addressbook 44 - which is the whole reason why I wrote this stuff. 45 46 For those who really want to use this module right away 47 48 - go ahead and access the hash values directly for the time being 49 - keep in mind that I will be making a get/set method interface 50 - once that is established you will need to use that interface instead 51 52ACCESSOR METHODS 53 NAME values 54 $vcard->familyName( [ familyName ] ) 55 $vcard->givenName( [ givenName ] ) 56 $vcard->additionalNames( [ additionalNames ] ) 57 $vcard->suffixes( [ suffixes ] ) 58 $vcard->prefixes( [ prefixes ] ) 59 60 ADDRESSES 61 To access address data: 62 63 $card->ADR( type )->field; 64 $card->ADR( )->city; # Default address, city field 65 $card->ADR( "home" )->address; # Home address type, address field 66 67 $card->ADR( [type] )->country 68 $card->ADR( [type] )->poBox 69 $card->ADR( [type] )->city 70 $card->ADR( [type] )->region 71 $card->ADR( [type] )->address 72 $card->ADR( [type] )->postalCode 73 $card->ADR( [type] )->extendedAddress 74 75 There are some decisions to be taken wrt ADR values. 76 77 Firstly 78 79 As of now the RFC specifies action to take in the case of unlisted type 80 - the address gets four types - intl, parcel, postal, and work. This 81 implies that several types refer to the same address. 82 83 What I am doing for loading this data is storing the address in a hash 84 entry by the first name and listing the remainder in "_alias" hash key. 85 86 What happens when one of these addresses is updated? Do we copy all the 87 values to unique hash entries or do we update the common copy, requiring 88 the developer to explicitly declare a new address replace the common 89 entry. 90 91 If this doesn't make sense email me and I'll try another explaination. 92 93 Secondly 94 95 What about preferred addresses? For now I am going to let the module 96 user optionally request their preferred address type. If it does not 97 exist then we'll keep looking for less preferred address types like the 98 "pref" that was specified when loading vcard data, and finally the 4 99 default types. 100 101SUPPORT 102 For technical support please email to jlawrenc@cpan.org ... for faster 103 service please include "Net::vCard" and "help" in your subject line. 104 105AUTHOR 106 Jay J. Lawrence - jlawrenc@cpan.org 107 Infonium Inc., Canada 108 http://www.infonium.ca/ 109 110COPYRIGHT 111 Copyright (c) 2003 Jay J. Lawrence, Infonium Inc. All rights reserved. 112 This program is free software; you can redistribute it and/or modify it 113 under the same terms as Perl itself. 114 115 The full text of the license can be found in the LICENSE file included 116 with this module. 117 118ACKNOWLEDGEMENTS 119 Net::iCal - whose loading code inspired me for mine 120 121SEE ALSO 122 RFC 2426, Net::iCal 123 124