use strict;
use Data::Dumper;
$Data::Dumper::Indent = 1;
my %thingy;
my @lines = ... # insert your data here
for (sort @lines) {
my ($type,$stuff) = $_ =~ /([A-Z]):\s+(.*)/;
my @parts = split('/',$stuff);
push @parts,'';
my $str = q|$thingy{'| . shift(@parts) . q|'}|;
for my $part (@parts) {
$str .= qq|->{'$part'}|;
}
eval $str;
}
print Dumper \%thingy;
####
my (@list,$flat);
flatten($_,$thingy{$_}) foreach keys %thingy;
sub flatten {
my ($key,$rest) = @_;
unless ($rest) {
push @list,$flat;
undef $flat;
return;
}
$flat .= "$key/";
flatten(%$rest);
}
print Dumper \@list;
####
$VAR1 = [
'Location/',
'Topology/IPClassA/Device/log_ratio/'
];