]> git.donarmstrong.com Git - infobot.git/blob - scripts/showvars.pl
modify for new debian release
[infobot.git] / scripts / showvars.pl
1 @test = ("test");
2
3 sub dumpvar {
4     ($packageName) = @_;
5     $rPackage =
6       \%{"${packageName}::"
7       };    # Get a reference to the appropriate symbol table hash.
8     $, = " ";
9     while ( ( $varName, $globValue ) = each %$rPackage ) {
10         last if ( $varName eq "main::" );
11         print "$varName ============================= \n";
12         *var = $globValue;
13         if ( defined($var) ) {
14             print "\t \$$varName = '$var' \n";
15         }
16         if ( defined(@var) ) {
17             pretty_print(@var);
18 ###         print "\t \@$varName @var \n";
19         }
20         if ( defined(%var) ) {
21             pretty_print(%var);
22 ###         print "\t \%$varName ",%var," \n";
23         }
24     }
25 }
26
27 dumpvar("main");
28
29 $level = -1;    # Level of indentation
30
31 sub pretty_print {
32     my $var;
33     foreach $var (@_) {
34         if ( ref($var) ) {
35             print_ref($var);
36         }
37         else {
38             print_scalar($var);
39         }
40     }
41 }
42
43 sub print_scalar {
44     ++$level;
45     print_indented( $_[0] );
46     --$level;
47 }
48
49 sub print_ref {
50     my $r = $_[0];
51     if ( exists( $already_seen{$r} ) ) {
52         print_indented("$r (Seen earlier)");
53         return;
54     }
55     else {
56         $already_seen{$r} = 1;
57     }
58     my $ref_type = ref($r);
59     if ( $ref_type eq "ARRAY" ) {
60         print_array($r);
61     }
62     elsif ( $ref_type eq "SCALAR" ) {
63         print "Ref -> $r";
64         print_scalar($$r);
65     }
66     elsif ( $ref_type eq "HASH" ) {
67         print_hash($r);
68     }
69     elsif ( $ref_type eq "REF" ) {
70         ++$level;
71         print_indented("Ref -> ($r)");
72         print_ref($$r);
73         --$level;
74     }
75     else {
76         print_indented("$ref_type (not supported)");
77     }
78 }
79
80 sub print_array {
81     my ($r_array) = @_;
82     ++$level;
83     print_indented("[ # $r_array");
84     foreach $var (@$r_array) {
85         if ( ref($var) ) {
86             print_ref($var);
87         }
88         else {
89             print_scalar($var);
90         }
91     }
92     print_indented("]");
93     --$level;
94 }
95
96 sub print_hash {
97     my ($r_hash) = @_;
98     my ( $key, $val );
99     ++$level;
100     print_indented("{ # $r_hash");
101     while ( ( $key, $val ) = each %$r_hash ) {
102         $val = ( $val ? $val : '""' );
103         ++$level;
104         if ( ref($val) ) {
105             print_indented("$key => ");
106             print_ref($val);
107         }
108         else {
109             print_indented("$key => $val");
110         }
111         --$level;
112     }
113     print_indented("}");
114     --$level;
115 }
116
117 sub print_indented {
118     $spaces = ":  " x $level;
119     print "${spaces}$_[0]\n";
120 }
121
122 # vim:ts=4:sw=4:expandtab:tw=80