#!/bin/perl package myClass; use strict; use warnings; use vars qw($VERSION); $VERSION = '0.01'; #----------------------------- new() -----------------------------------------# sub new { my($class) = shift; my($name) = shift; my($self) = {}; $self->{childs} = []; $self->{name} = $name; $self->{parent} = undef; return(bless($self, $class)); } #---------------------------- sort() -----------------------------------------# sub sort { my($self, $sortFunc) = @_; my($nodeObj); my(@tmpArr); if ( scalar(@tmpArr=$self->childList()) ) { if ( $sortFunc ) { @tmpArr = sort $sortFunc @tmpArr; } else { @tmpArr = sort(@tmpArr); } $self->{childs} = \@tmpArr; for $nodeObj ( @tmpArr ) { $nodeObj->sort($sortFunc); } } } #----------------------------- name() ----------------------------------------# sub name { my($self) = @_; return($self->{name}); } #----------------------------- childList() -----------------------------------# sub childList { my($self) = @_; if ( defined($self->{childs}) ) { return(@{$self->{childs}}); } else { return(()); } } #----------------------------- addChild() ------------------------------------# sub addChild { my($self, $childObj, $idx) = @_; if ( ($idx == -1) || ($idx >= scalar(@{$self->{childs}})) ) { push(@{$self->{childs}}, $childObj); } else { my(@tmpArr) = @{$self->{childs}}; @tmpArr = ( @tmpArr[0..($idx-1)], $childObj, @tmpArr[$idx..(scalar(@tmpArr)-1)] ); $self->{childs} = \@tmpArr; } $childObj->{parent} = $self; } 1;