#!/usr/bin/perl -w
#by Torben Menke
#http://www.entorb.net
# Script for exporting a kde-adressbook to Opera
# Only name + eMail are exported

use warnings;
use strict;
use Data::Dumper;


my @vcffiles = (
"/home/torben/.kde/share/apps/kabc/privat.vcf"
,"/home/torben/.kde/share/apps/kabc/iapp.vcf"
);
my $outfile = "./std.adr";
my $counterNames = 0;
my $counterMails = 0;

$_ = pack ('H*',2);
print pack ('H*',2);
print "\n";
#die;
my $header =
"Opera Hotlist version 2.0
Options: encoding = utf8, version=3

#FOLDER
NAME=Imported Contacts
\n";

my $operaList = $header;

my $mailTrenner = "\x02\x02";

foreach my $vcffile (@vcffiles) {
open VCF, "< $vcffile" or die $!;
my @vcfcards = split "END:VCARD", (join "",<VCF>);
close VCF;

# print Dumper @vcfcards and die();


foreach my $card (@vcfcards) {
next if (not $card =~ m/^N:([^;]*);([^;]*);/m);
$counterNames++;
my $name = $2.' '.$1;
my @eMails;
while ($card =~ m/^EMAIL[^:]*:\s*([^\s]*)/gcm) {
push @eMails,$1;
$counterMails++;
}
if (@eMails){
$operaList .= "#CONTACT\n\tNAME=$name\n\t";
$operaList .= "MAIL=".(join $mailTrenner,@eMails)."\n\t";
$operaList .= "ICON=Contact0\n\n";
}
}
} # end foreach vcf file

open OUT, "> $outfile" or die $!;
print OUT $operaList;
close OUT;

print "$counterNames Names with $counterMails eMails exported to file $outfile\n";

Hope you found what you where looking for. Feel free to drop me a line
Torben