#!/usr/bin/perl use strict; use warnings; use XML::Handler::YAWriter; use XML::Generator::Pdb; use IO::File; use File::Temp 'tempfile'; use Getopt::Long; use Pod::Usage; my ($Source, $Output, $Format, $Verbose, $Help); GetOptions( "source=s" => \$Source, "output=s" => \$Output, "format=s" => \$Format, "verbose" => \$Verbose, "help" => \$Help ); pod2usage(-verbose => 2) if $Help; pod2usage(-verbose => 1) unless $Format; unless (defined $Source) { my ($fh, $file) = tempfile; binmode $fh; print $fh $_ while (<>); $fh->close; $Source = $file; } $Output ||= "-"; my @Format = split /,/, $Format; my $writer = XML::Handler::YAWriter->new( Output => IO::File->new( ">$Output" ), Pretty => { PrettyWhiteIndent => 1, PrettyWhiteNewline => 1 } ); my $driver = XML::Generator::Pdb->new( Handler => $writer, PDBFile => $Source, Layout => [ @Format ] ); $driver->parse; exit(0); __END__ =head1 NAME pdbtoxml - Generate an XML description form a Palm PDB =head1 SYNOPSIS pdbtoxml --format=int,data,time,text --source=./input.pdb --output=./out.xml cat input.pdb | pdbtoxml --format=int,data,time,text --output=./out.xml cat input.pdb | pdbtoxml --format=int,data,time,text > out.xml =head1 OPTIONS =over 4 =item B<--source> A PDB file, an alternative is to use standard input. =item B<--output> The file to write XML description to. An alternative is to use standard output. =item B<--format> The layout of a PDB record which is a list of datatypes seperated by commas. This option is mandatory. =item B<--help> What you are reading now. =back =head1 DESCRIPTION This tool generates an XML description starting form a Palm PDB. The datatypes supported are especially targetted to NSBasic (http://www.nsbasic.com), but can be used with any other PalmOS dev. language. The only drawback is that every record in the database needs to have the same layout. =head1 AUTHOR Johan Van den Brande =head1 LICENSE This is free software, distributed underthe same terms as Perl itself. =cut