#! /usr/bin/perl use strict; use warnings; my $id = 0; my $tabCntr; my %parent; my $parentId = 0; $parent{0} = 0; while () { chomp; $tabCntr = (s/\t//g || 0); $parent{$tabCntr} = ++$id; $parentId = $tabCntr?$parent{$tabCntr - 1}:0; print "id : $id, name : $_, parent $parentId \n"; } __END__ cat1 cat1,sub1 cat1,sub1,sub-sub1 cat1,sub1,sub-sub1 cat1,sub2 cat2 cat3 cat3,sub1