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 #### |-- ./DIR_COLORS |-- ./X11 | |-- ./X11/WindowMaker | | |-- ./X11/WindowMaker/WMGLOBAL | | `-- ./X11/WindowMaker/WindowMaker | |-- ./X11/XF86Config | |-- ./X11/Xresources | |-- ./X11/Xsession | |-- ./X11/app-defaults | | |-- ./X11/app-defaults/Beforelight | | |-- ./X11/app-defaults/Bitmap | | `-- ./X11/app-defaults/Xvidtune | |-- ./X11/glx.conf | |-- ./X11/lbxproxy | | `-- ./X11/lbxproxy/AtomControl |-- ./xinetd.conf |-- ./xinetd.d | |-- ./xinetd.d/cups-lpd | |-- ./xinetd.d/cvs | |-- ./xinetd.d/fam | |-- ./xinetd.d/proftpd-xinetd | |-- ./xinetd.d/rsync | `-- ./xinetd.d/sshd-xinetd |-- ./xml | `-- ./xml/catalog `-- ./xpdfrc