use strict; use warnings; my @levels = '.'; while () { chomp; my ($prefix, $node) = split(/(?<=-- )/, $_, 2); my $level = length($prefix)/2-1; $levels[$level] = "$levels[$level-1]/$node"; print("$prefix$levels[$level]\n"); } __DATA__ |-- DIR_COLORS |-- X11 | |-- WindowMaker | | |-- WMGLOBAL | | `-- WindowMaker | |-- XF86Config | |-- Xresources | |-- Xsession | |-- app-defaults | | |-- Beforelight | | |-- Bitmap | | `-- Xvidtune | |-- glx.conf | |-- lbxproxy | | `-- AtomControl |-- xinetd.conf |-- xinetd.d | |-- cups-lpd | |-- cvs | |-- fam | |-- proftpd-xinetd | |-- rsync | `-- sshd-xinetd |-- xml | `-- catalog `-- xpdfrc