use XML::Twig; undef $/; $x=; ## i have assumed that dc:identifier as first child of rdf:Description. $p=new XML::Twig(twig_roots=>{ 'rdf:Description'=>\&rdf}, pretty_print => 'indented'); $p->parse($x); sub rdf { my ($a,$b)=@_; my $filename=$b->first_child_text; open(FOUT,">$filename") or die("$filename not opened for writing\n"); print FOUT q(); print FOUT $b->sprint; close(FOUT); } __DATA__ ab.xml abc bc.xml bcd ef.xml efg