Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
PerlMonks - Ximian Evolution address book to Nokia 3360

by dpatrick (Scribe)
on Dec 31, 2002 at 22:38 UTC ( #223489=sourcecode: print w/replies, xml ) Need Help??
Category: Wireless
Author/Contact Info D. Anthony Patrick
Description: I wrote this script after having no luck finding a pre-existing utility to sync my Ximian contacts and wireless address book.
  • Linux
  • IR port for your computer
  • IR drivers/services installed (google for this)
  • Nokia 3360 (or something comparable model phone; try yours and let me know if it works)
  • ircp (google for this as well)
  • Term::ReadKey

Here's how it works: click "Contacts" in your Evolution "Shortcuts" menu; in your menubar go to "Edit"->"Select All"; then "File"->"Save as VCard" to a working directory that you don't mind alot of .vcf files piling up in (one per contact).

Set your phone to receive in it's "Infrared" menu. Now, grab this script, make it executable, and run it like so: ./ contactsFromEvolution.vcf, making sure that your phone's IR port and your computer's IR port are aligned (pointing at each other). I use a mirror since my IR port is on the back of my laptop.

The script immediately begins transmitting each contact individual, causing your phone to ring and prompt you to accept the transmission. Then you need to hit any key on your computer to initiate the next transmission. Yes, I know this sucks and takes a while for a large number of contacts but I've been unable to locate documentation on how to transmit them all at once. When I do, I'll update the script. It'll also be available at


use strict;

my $i = 1;

my $list_vcf_file = @ARGV[0];
open(LISTVCF, $list_vcf_file);

while(<LISTVCF>) {
    if (/(^BEGIN:VCARD\r\n$)/) {
        open(ENTRY, ">./$i.vcf");
        print ENTRY $1;
    elsif (/(^\r\n$)/) {
        print ENTRY $1;
        close ENTRY;
        print "Initiating vCard transmission #$i...\n";
        print `ircp $i.vcf 2>&1`;
        print "Hit any key for next transmission....\n";
        use Term::ReadKey;
        my $key;
        while (not defined ($key = ReadKey(0))) {
    elsif (/(^END:VCARD\r\n$)/) {
        print ENTRY $1;
    else {
        print ENTRY $_;

close LISTVCF;

print "\nDone.";

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: sourcecode [id://223489]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (4)
As of 2023-03-25 05:00 GMT
Find Nodes?
    Voting Booth?
    Which type of climate do you prefer to live in?

    Results (62 votes). Check out past polls.