1#! /usr/bin/perl
2
3use strict ;
4use warnings ;
5use Carp ;
6
7use Data::TreeDumper ;
8use Data::TreeDumper::OO ;
9
10my $sub = sub {} ;
11
12my %tree =
13	(
14	A =>
15		{
16		a =>
17			{
18			}
19		, bbbbbb => $sub
20		, c123 => $sub
21		, d => \$sub
22		, eeeee => $sub
23		, f => $sub
24		, g => $sub
25		}
26
27	, C =>	{
28		b =>
29			{
30			a =>
31				{
32				a =>
33					{
34					}
35
36				, b => sub
37					{
38					}
39				, c => 42
40				}
41
42			}
43		}
44	, B => 'scalar'
45	, C => [qw(element_1 element_2)]
46	, HASH =>
47		{
48		a => 'a',
49		1 => 1,
50		'1a' => 1,
51		2 => 2,
52		9 => 9,
53		10 => 10,
54		11 => 11,
55		19 => 19,
56		20 => 20,
57		'2b' => '2b',
58		'2b0' => '2b0',
59		'20b' => '20b',
60		}
61	) ;
62
63my $hi = '25' ;
64my $array_ref = [0, 1, \$hi] ;
65$tree{Nadim} = \$array_ref ;
66#~ $tree{REF2_to_array_ref} = \$array_ref ;
67
68#~ $tree{aREF_to_C} = $tree{C} ;
69#~ $tree{REF_to_C} = \($tree{C}) ;
70
71#~ $tree{aREF_REF_to_C} = $tree{REF_to_C} ;
72#~ $tree{REF_REF_to_C} = \($tree{REF_to_C}) ;
73
74$tree{SELF} = [ 0, 1, 2, \%tree] ;
75$tree{RREF} = \\$array_ref ;
76$tree{RREF2} = \\$array_ref ;
77
78$tree{SCALAR} = \$hi ;
79$tree{SCALAR2} = \$hi ;
80$tree{ARRAY} = [0, 1, \$hi] ;
81
82my $object = {m1 => 12, m2 => [0, 1, 2]} ;
83bless $object, 'SuperObject' ;
84
85$tree{OBJECT} = $object ;
86$tree{OBJECT2} = $object ;
87$tree{OBJECT_REF_REF_REF} = \\\$object ;
88
89my $ln = 'Long_name ' x 20 ;
90$tree{$ln} = 0 ;
91
92$tree{ARRAY2} = [0, 1, \$object, $object] ;
93
94use IO::File;
95my $fh = new IO::File;
96$tree{FILE} = $fh ;
97
98use IO::Handle;
99my $io = new IO::Handle;
100
101$tree{IO} = $io ;
102
103$tree{ARRAY_ZERO} = [] ;
104
105sub HashKeysStartingAboveA
106{
107my $tree = shift ;
108
109if('HASH' eq ref $tree)
110	{
111	return( 'HASH', undef, sort grep {!/^A/} keys %$tree) ;
112	}
113
114return (Data::TreeDumper::DefaultNodesToDisplay($tree)) ;
115}
116
117my $tree_dumper = new Data::TreeDumper::OO ;
118#~ $tree_dumper->UseAnsi(1) ;
119#~ $tree_dumper->UseAscii(0) ;
120#~ $tree_dumper->SetMaxDepth(2) ;
121
122print $tree_dumper->Dump(\%tree, "Data:TreeDumper dump example:",  DISPLAY_ROOT_ADDRESS => 1, DISPLAY_PERL_SIZE => 0, USE_ASCII => 0) ;
123
124use Data::Dumper;
125print Dumper \%tree ;
126
127print $tree_dumper->Dump(\%tree, "Data:TreeDumper dump example:", MAX_DEPTH => 1, DISPLAY_NUMBER_OF_ELEMENTS_OVER_MAX_DEPTH => 1) ;
128
129