#!/usr/bin/perl use strict; use warnings; use DBI; use XML::Twig; my $CATALOG_FILE = "plant_catalog.xml"; my $DB_FILE = "plant_catalog.db"; my $dbh= DBI->connect("dbi:SQLite:dbname=$DB_FILE","",""); my $sth= $dbh->prepare( "INSERT into plant ( id, common, botanical, zone, light, price, availability) VALUES ( ?, ?, ?, ?, ?, ?, ?) "); XML::Twig->new( twig_handlers => { plant => \&store_plant }) ->parsefile( $CATALOG_FILE); exit; sub store_plant { my( $t, $plant)= @_; # the map... returns the list of text of all children of plant $sth->execute( $plant->id, map { $_->text } $plant->children); }