my @path = '.'; while () { chomp; my ($prefix, $node) = /^((?:\| )*[|`]-- )(.+)/ or next; splice @path, length($prefix)/2-1, 0+@path, $node; print $prefix, join("/" => @path), "\n"; }