#!/usr/bin/perl -w # # vcf2kphone.pl # # Developed by Ondrej Jombik # Copyright (c) 2011 Platon Group, http://platon.sk/ # Licensed under terms of GNU General Public License. # All rights reserved. # # Changelog: # 2011-10-09 - created # # # HOW TO USE EXAMPLE: # # cat /mnt/sdb/Others/Contacts/* | ./vcf2kphone.pl > ~/.kphone-phonebook.xml # # $Platon$ use strict; use Data::Dumper; $| = 1; my %entry; print < EOS while (<>) { $_ =~ s/^\s*//g; $_ =~ s/\s*$//g; ##print "LINE: $_\n"; if ($_ eq 'BEGIN:VCARD') { %entry = ( name => undef, numbers => undef ); next; } if ($_ eq 'END:VCARD') { if (not defined $entry{name} or length $entry{name} <= 0) { next; } print "\n"; foreach my $numtype (keys %{$entry{numbers}}) { printf(" \n", $entry{numbers}{$numtype}, $entry{name}, $numtype); } print "\n"; next; } if ($_ =~ /^N:(.*)$/) { $entry{name} = $1; $entry{name} =~ s/;/, /g; next; } if ($_ =~ /^TEL;(.*)$/) { my ($type, $number) = split /:/, $1, 2; while (defined $entry{numbers}{$type}) { $type .= 'X'; } $number =~ s/^\+//g; $entry{numbers}{$type} = $number; next; } } print < EOS # vim: ts=4 # vim600: fdm=marker fdl=0 fdc=3