]> git.donarmstrong.com Git - infobot.git/blob - scripts/symname.pl
modify for new debian release
[infobot.git] / scripts / symname.pl
1 #!/usr/bin/perl -w
2
3 # hrm...
4 #use strict;
5
6 my @test;
7 my @test1;
8 my %test;
9
10 $test{'hash0r'}   = 2;
11 $test{'hegdfgsd'} = 'GSDFSDfsd';
12
13 push( @test1, "Aeh." );
14 push( @test1, "Beh." );
15 push( @test1, "Ceh." );
16 push( @test1, "Deh." );
17
18 push( @test, "heh." );
19 push( @test, \%test );
20
21 #push(@test,\%ENV);
22 push( @test, \@test1 );
23
24 print "=============start=================\n";
25
26 #&DumpArray(0, '@test', \@test);
27 &DumpPackage( 0, 'main::', \%main:: );
28
29 # SCALAR ARRAY HASH CODE REF GLOB LVALUE
30 sub DumpArray {
31     my ( $pad, $symname, $arrayref ) = @_;
32     my $padding = " " x $pad;
33     my $scalar  = 0;
34     my $size    = 0;
35
36     print "$padding$symname\n";
37     foreach ( @{$arrayref} ) {
38         my $ref = ref $_;
39         if ( $ref eq 'ARRAY' ) {
40             $size += &DumpArray( $pad + 1, "@" . $_, $_ );
41         }
42         elsif ( $ref eq 'HASH' ) {
43             $size += &DumpHash( $pad + 1, "%" . $_, $_ );
44         }
45         else {
46             print "$padding $_ $ref\n";
47             $scalar++;
48             $size += length($_);
49         }
50     }
51     print $padding. "scalars $scalar, size $size\n";
52     return $size;
53 }
54
55 sub DumpHash {
56     my ( $pad, $symname, $hashref ) = @_;
57     my $padding = " " x $pad;
58     my $scalar  = 0;
59     my $size    = 0;
60
61     my %sym  = %{$hashref};
62     my @list = sort keys %sym;
63     print "$padding$symname\n";
64
65     foreach (@list) {
66         my $ref = ref %{$symname};    #FIXME
67         $size += length($_);
68         if ( $ref eq 'ARRAY' ) {
69             $size += &DumpArray( $pad + 1, "@" . $_, $_ );
70         }
71         elsif ( $ref eq 'HASH' ) {
72             $size += &DumpHash( $pad + 1, "%" . $_, $_ );
73         }
74         else {
75             print "$padding $_=$sym{$_} $ref\n";
76             $scalar++;
77             $size += length( $sym{$_} );
78         }
79     }
80     print $padding. "scalars $scalar, size $size\n";
81     return $size;
82 }
83
84 sub DumpPackage {
85     my ( $pad, $packname, $package ) = @_;
86     my $padding = " " x $pad;
87     my $scalar  = 0;
88     my $size    = 0;
89
90     print $padding . "\%$packname\n";
91     my $symname;
92     foreach $symname ( sort keys %$package ) {
93         local *sym = $$package{$symname};
94         if ( defined $sym ) {
95             print "$padding \$$symname='$sym'\n";
96             $scalar++;
97             $size += length($sym);
98         }
99         elsif ( defined @sym ) {
100             $size += &DumpArray( $pad + 1, $symname, \@sym );
101         }
102         elsif ( defined %sym ) {
103             $size += &DumpHash( $pad + 1, $symname, \%sym );
104         }
105         elsif ( ( $symname =~ /::/ ) and ( $symname ne 'main::' ) ) {
106             $size += &DumpPackage( $pad + 1, \%sym, $symname );
107         }
108         else {
109             print( "ERROR $symname" . ref $symname . "\n" );
110         }
111     }
112     print $padding. "scalars $scalar, size $size\n";
113     return $size;
114 }
115
116 # vim:ts=4:sw=4:expandtab:tw=80