2 # DumpVars.pl: Perl variables dumper.
4 # Version: v0.1 (20000114)
6 # NOTE: Ripped from ActivePerl "asp sample" example.
18 if ( &IsParam('dumpvarsLogFile') ) {
19 print DUMPVARS $line . "\n";
22 &status( "DV: " . $line );
27 my ( $package, $packname ) = @_;
31 if ( $packname eq 'main::' ) {
32 &dumpvarslog('Packages');
34 foreach $symname ( sort keys %$package ) {
35 local *sym = $$package{$symname};
36 next unless ( defined %sym );
37 next unless ( $symname =~ /::/ );
38 &dumpvarslog(" $symname");
44 foreach $symname ( sort keys %$package ) {
45 local *sym = $$package{$symname};
46 next unless ( defined $sym );
49 if ( length($sym) > 512 ) {
50 &dumpvarslog("Scalar '$packname' $symname too long.");
53 &dumpvarslog("Scalar '$packname' \$ $symname => '$sym'");
59 foreach $symname ( sort keys %$package ) {
60 local *sym = $$package{$symname};
61 next unless ( defined &sym );
63 &dumpvarslog("Function '$packname' $symname()");
68 foreach $symname ( sort keys %$package ) {
69 local *sym = $$package{$symname};
70 next unless ( defined @sym );
73 "List '$packname' \@$symname (" . scalar( @{$symname} ) . ")" );
76 next unless ( $packname eq 'main::' );
77 foreach ( @{$symname} ) {
79 &dumpvarslog(" => '$_'.");
82 &dumpvarslog(" => <NULL>.");
88 foreach $symname ( sort keys %$package ) {
89 local *sym = $$package{$symname};
90 next unless ( defined %sym );
91 next if ( $symname =~ /::/ );
93 &dumpvarslog("Hash '$packname' \%$symname");
96 next unless ( $packname eq 'main::' );
97 foreach ( keys %{$symname} ) {
98 my $val = ${$symname}{$_};
100 &dumpvarslog(" $_ => '$val'.");
103 &dumpvarslog(" $_ => <NULL>.");
108 return unless ( $packname eq 'main::' );
110 foreach $symname ( sort keys %$package ) {
111 local *sym = $$package{$symname};
112 next unless ( defined %sym );
113 next unless ( $symname =~ /::/ );
114 next if ( $symname eq 'main::' );
116 DumpNames( \%sym, $symname );
121 if ( &IsParam('dumpvarsLogFile') ) {
122 my $file = $param{'dumpvarsLogFile'};
123 &status("opening fh to dumpvars ($file)");
124 if ( !open( DUMPVARS, ">$file" ) ) {
125 &ERROR("cannot open dumpvars.");
130 DumpNames( %main::, 'main::' );
132 if ( &IsParam('dumpvarsLogFile') ) {
133 &status("closing fh to dumpvars");
137 &status("DV: count == $countlines");
142 # vim:ts=4:sw=4:expandtab:tw=80