#!/usr/bin/perl -w use warnings; use strict; use XML::SAX::ParserFactory; my $handler = TagListHandler->new; my $parser = XML::SAX::ParserFactory->parser(Handler => $handler); my $filename = shift or die "No filename\n"; my $tags = $parser->parse_uri($filename); print "$_\n" foreach @$tags; exit; package TagListHandler; use base qw(XML::SAX::Base); sub start_element { my($self, $data) = @_; $self->{tag}->{ $data->{Name} } = 1; } sub end_document { my($self) = @_; my @tags = sort keys %{ $self->{tag} || {} }; return \@tags; }