#!/usr/local/bin/perl use strict; use warnings; my @parents = (0); my $prev_tabs = 0; while () { chomp; my $tabs = tr/\t//d; if ($tabs > $prev_tabs) { push @parents, $. - 1; } elsif ($tabs < $prev_tabs) { $#parents = $tabs; } print "$. : $_ : $parents[-1]\n"; $prev_tabs = $tabs; } __END__ cat1 cat1,sub1 cat1,sub1,sub-sub1 cat1,sub2 cat2 cat3 cat3,sub1