X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scripts%2Fsymname.pl;h=f0562ab43cd879bae3ad5f4169e0cf10bbeb1d7f;hb=e4a9397b50848fd83f084324176e2afbaeaa241f;hp=d4b5d935533c6c65338e36d328fa1f568c3d7a17;hpb=01ee374a5bfa5747eae0d3a4a802d626f3a69081;p=infobot.git diff --git a/scripts/symname.pl b/scripts/symname.pl index d4b5d93..f0562ab 100755 --- a/scripts/symname.pl +++ b/scripts/symname.pl @@ -7,89 +7,110 @@ my @test; my @test1; my %test; -$test{'hash0r'} = 2; +$test{'hash0r'} = 2; $test{'hegdfgsd'} = 'GSDFSDfsd'; -push(@test1,"Aeh."); -push(@test1,"Beh."); -push(@test1,"Ceh."); -push(@test1,"Deh."); +push( @test1, "Aeh." ); +push( @test1, "Beh." ); +push( @test1, "Ceh." ); +push( @test1, "Deh." ); + +push( @test, "heh." ); +push( @test, \%test ); -push(@test,"heh."); -push(@test,\%test); #push(@test,\%ENV); -push(@test,\@test1); +push( @test, \@test1 ); print "=============start=================\n"; + #&DumpArray(0, '@test', \@test); -&DumpPackage(0, 'main::', \%main::); +&DumpPackage( 0, 'main::', \%main:: ); # SCALAR ARRAY HASH CODE REF GLOB LVALUE sub DumpArray { - my ($pad, $symname, $arrayref) = @_; - my $padding = " " x $pad; - my $scalar = 0; - my $size = 0; - - print "$padding$symname\n"; - foreach (@{$arrayref}) { - my $ref = ref $_; - if ($ref eq 'ARRAY') { - $size += &DumpArray($pad+1, "@" . $_, $_); - } elsif ($ref eq 'HASH') { - $size += &DumpHash($pad+1, "%" . $_, $_); - } else { - print "$padding $_ $ref\n"; - $scalar++; - $size += length($_); - } - } - print $padding."scalars $scalar, size $size\n"; - return $size; + my ( $pad, $symname, $arrayref ) = @_; + my $padding = " " x $pad; + my $scalar = 0; + my $size = 0; + + print "$padding$symname\n"; + foreach ( @{$arrayref} ) { + my $ref = ref $_; + if ( $ref eq 'ARRAY' ) { + $size += &DumpArray( $pad + 1, "@" . $_, $_ ); + } + elsif ( $ref eq 'HASH' ) { + $size += &DumpHash( $pad + 1, "%" . $_, $_ ); + } + else { + print "$padding $_ $ref\n"; + $scalar++; + $size += length($_); + } + } + print $padding. "scalars $scalar, size $size\n"; + return $size; } -sub DumpHash{ - my ($pad, $symname, $hashref) = @_; - my $padding = " " x $pad; - my $scalar = 0; - my $size = 0; - - my %sym = %{$hashref}; - my @list = sort keys %sym; - print "$padding$symname\n"; - - foreach (@list) { - my $ref = ref %{$symname}; - $size += length($_); - if ($ref eq 'ARRAY') { - $size += &DumpArray($pad+1, "@" . $_, $_); - } elsif ($ref eq 'HASH') { - $size += &DumpHash($pad+1, "%" . $_, $_); - } else { - print "$padding $_=$sym{$_} $ref\n"; - $scalar++; - $size += length($sym{$_}); - } - } - print $padding."scalars $scalar, size $size\n"; - return $size; +sub DumpHash { + my ( $pad, $symname, $hashref ) = @_; + my $padding = " " x $pad; + my $scalar = 0; + my $size = 0; + + my %sym = %{$hashref}; + my @list = sort keys %sym; + print "$padding$symname\n"; + + foreach (@list) { + my $ref = ref %{$symname}; #FIXME + $size += length($_); + if ( $ref eq 'ARRAY' ) { + $size += &DumpArray( $pad + 1, "@" . $_, $_ ); + } + elsif ( $ref eq 'HASH' ) { + $size += &DumpHash( $pad + 1, "%" . $_, $_ ); + } + else { + print "$padding $_=$sym{$_} $ref\n"; + $scalar++; + $size += length( $sym{$_} ); + } + } + print $padding. "scalars $scalar, size $size\n"; + return $size; } sub DumpPackage { - my ($pad, $packname, $package) = @_; - my $padding = " " x $pad; - my $scalar = 0; - my $size = 0; - - print $padding . "\%$packname\n"; - my $symname; - foreach $symname (sort keys %$package) { - local *sym = $$package{$symname}; - print "$padding \$$symname='$sym'\n" if (defined $sym); - $size += &DumpArray($pad+1, $symname, \@sym) if (defined @sym); - $size += &DumpHash($pad+1, $symname, \%sym) if (defined %sym); - $size += &DumpPackage($pad+1, \%sym, $symname) if (($symname =~ /::/) and ($symname ne 'main::')); - } - print $padding."scalars $scalar, size $size\n"; - return $size; + my ( $pad, $packname, $package ) = @_; + my $padding = " " x $pad; + my $scalar = 0; + my $size = 0; + + print $padding . "\%$packname\n"; + my $symname; + foreach $symname ( sort keys %$package ) { + local *sym = $$package{$symname}; + if ( defined $sym ) { + print "$padding \$$symname='$sym'\n"; + $scalar++; + $size += length($sym); + } + elsif ( defined @sym ) { + $size += &DumpArray( $pad + 1, $symname, \@sym ); + } + elsif ( defined %sym ) { + $size += &DumpHash( $pad + 1, $symname, \%sym ); + } + elsif ( ( $symname =~ /::/ ) and ( $symname ne 'main::' ) ) { + $size += &DumpPackage( $pad + 1, \%sym, $symname ); + } + else { + print( "ERROR $symname" . ref $symname . "\n" ); + } + } + print $padding. "scalars $scalar, size $size\n"; + return $size; } + +# vim:ts=4:sw=4:expandtab:tw=80