#!/usr/bin/perl use strict; use warnings; use XML::Twig; my $CATALOG_FILE = "plant_catalog.xml"; # a rather silly example of extracting information from a web page with XML::Twig # nparse creates a new twig and parses the argument (an html file here) my $RATE = XML::Twig->nparse( "http://www.x-rates.com/index.html") ->first_elt( q{a[@href="/d/USD/EUR/graph120.html"]}) ->text; warn "rate: 1 EUR = $RATE USD\n"; my $catalog= XML::Twig->new( twig_roots => { price => \&price, }, twig_print_outside_roots => 1, ); $catalog->parsefile( $CATALOG_FILE); exit; sub price { my( $twig, $price)= @_; my $value= $price->text; if( $value=~ /^\$(.*)$/) { my $dollar_value= $1; my $euro_value= sprintf( "%5.2f", $dollar_value / $RATE); $price->set_text( $euro_value); $price->set_att( currency => "EUR"); } else { die "wrong dollar value '$value'\n"; } $price->print; $twig->purge; }