#use Data::Dumper; my @array = ( 'Main//Reviews//PS2', 'Other Menu//Other//Sub//Menus', 'Main//Reviews//XBox', 'Main//News', 'Main//Reviews//PC' ); array2list(@array); sub array2list() { my %h; for (@_) { my $hr = \%h; for (split('//', $_ )) { $hr->{$_} = [(scalar keys %{$hr}), {}] unless (exists($hr->{$_})); $hr = $hr->{$_}[1]; } } #print Dumper(\%h),hr; displaylist (\%h); } sub displaylist() { print ''; }