#!/usr/bin/perl use strict; use XML::Simple; use Data::Dumper; my $bookmark = XMLin( './links.xml' ); # print Dumper( $bookmark ); # Data structure conversion my $bookmark_by_category = {}; foreach my $n (keys %{$bookmark->{link}}) { push @{ $bookmark_by_category->{ $bookmark->{link}->{$n}->{'category'} }}, { 'Name' => $n, 'Url' => $bookmark->{link}->{$n}->{'url'}, 'Description' => $bookmark->{link}->{$n}->{'description'}, }; } print Dumper( $bookmark_by_category );