#!/usr/bin/perl -w use strict; use warnings; use XML::Twig; my $t= XML::Twig->new(pretty_print=>'indented'); $t->parse( join('',) ); $t->root->sort_children( sub{ my $e = shift; return 0 if $e->tag eq 'header'; return 10000000 if $e->tag eq 'footer'; my @strength = $e->getElementsByTagName('strength') or die "Malformed element:\n".$e->sprint; return $strength[0]->text; }, type=>'numeric' ); $t->print; __DATA__
Eight 8 Four 4 Ten 10 One 1