![]() |
|< 1 2 3 >| | ![]() |
24 Einträge, 3 Seiten |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
sub new {
my ($class, $name) = (shift, shift);
my $self = {};
$self->{childs} = [];
$self->{name} = $name;
$self->{parent} = undef;
return bless $self, $class;
}
sub name {
return shift->{name};
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
sub new {
my ($class, $name) = (shift, shift);
my $self = {
childs => [],
name => $name,
parent => undef,
};
return bless $self, $class;
}
sub name {
return shift->{name};
}
printf("REF: %s / %s\n", ref($_[0]), ref($_[1]));
Can't call method "name" on an undefined value at ./myClass.pl line 23.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#!/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;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/bin/perl
use myClass;
@childObjs = ();
#---------------------------- sortNodes() ------------------------------------#
sub sortNodes {
printf("REF: %s / %s\n", ref($_[0]), ref($_[1]));
# $_[0]->name() cmp $_[1]->name();
# $a->name() cmp $b->name();
1
}
#--- CREATING TREE OBJECT ----------------------------------------------------#
$treeObj = new myClass("ROOT");
#--- CREATING CHILDS ! -------------------------------------------------------#
for ( $idx=0; $idx<5; $idx++ ) {
push(@childObjs, new myClass("CHILD_$idx"));
}
#--- ADD CHILDS ! ------------------------------------------------------------#
$treeObj->addChild($childObjs[0], -1);
$treeObj->addChild($childObjs[1], -1);
$childObjs[1]->addChild($childObjs[2], -1);
$treeObj->addChild($childObjs[3], 1);
$childObjs[1]->addChild($childObjs[4], -1);
#--- sort tree ! -------------------------------------------------------------#
$treeObj->sort(\&sortNodes);
1
2
3
4
sub sortNodes ($$) {
# printf( "REF: %s / %s\n", ref($_[0]), ref($_[1]) );
$_[0]->name() cmp $_[1]->name();
}
1
2
3
4
5
6
7
8
perl -wle'use Data::Dumper;
$a = \();
print Dumper $a;
@a = \();
print scalar @a'
$VAR1 = \undef;
0
![]() |
|< 1 2 3 >| | ![]() |
24 Einträge, 3 Seiten |