home *** CD-ROM | disk | FTP | other *** search
- #!perl -w
-
- $VERSION = '0.35';
-
-
- =head1 NAME
-
- phone2yaml - Convert a Palm phone book to YAML
-
- =head1 USAGE
-
- phone2yaml phone.tab > phone.yaml
-
- =head1 DESCRIPTION
-
- This program will convert a Palm Pilot phonebook .tab file (tab
- separated values) into YAML format. The output can then be easily
- processed by using YAML in your favorite programming language.
- (Like YAML.pm for Perl) Personally I just grep the YAML file, when
- I need a phone number.
-
- =head1 AUTHOR
-
- Brian Ingerson <ingy@cpan.org>
-
- =head1 COPYRIGHT
-
- Copyright 2002, Brian Ingerson - All rights reserved
-
- You may use this hack under the same terms as Perl itself.
-
- =cut
-
- use strict;
- use YAML;
- use YAML::Node;
-
- my @entries;
-
- while (my $line = <>) {
- $line =~ s/\r\n//g;
- my ($last, $first, $title, $company, $work, $home, $fax, $other, $email,
- $street, $city, $state, $postal, $country,
- undef, undef, undef, undef, $note, @rest) =
- map {s/^"(.*)"$/$1/; s/\r/\n/g; $_.="\n" if /\n./; $_}
- split "\t", $line;
-
- # YAML Nodes preserve key order.
- my $entry = YAML::Node->new({});
- $entry->{name} = YAML::Node->new({}) if $first or $last;
- $entry->{phones} = YAML::Node->new({}) if $work or $home or $fax or $other;
- $entry->{address} = YAML::Node->new({}) if $street or $city or $state or
- $postal or $country;
-
- $entry->{name}{first} = $first if $first;
- $entry->{name}{last} = $last if $last;
- $entry->{title} = $title if $title;
- $entry->{company} = $company if $company;
- $entry->{phones}{home} = $home if $home;
- $entry->{phones}{work} = $work if $work;
- $entry->{phones}{fax} = $fax if $fax;
- $entry->{phones}{other} = $other if $other;
- $entry->{email} = $email if $email;
- $entry->{address}{street} = $street if $street;
- $entry->{address}{city} = $city if $city;
- $entry->{address}{state} = $state if $state;
- $entry->{address}{postal} = $postal if $postal;
- $entry->{address}{country} = $country if $country;
- $entry->{note} = $note if $note;
- push @entries, $entry;
- }
-
- $YAML::UseBlock = 1;
- $YAML::UseVersion = 0;
- #$YAML::SortKeys = [ qw( name first last title company
- # phones work home fax other email
- # address street city state postal country
- # note
- # )
- # ];
-
- print Dump @entries;
-
-