2 # DumpVars.pl: Perl variables dumper.
4 # Version: v0.1 (20000114)
6 # NOTE: Ripped from ActivePerl "asp sample" example.
17 if (&IsParam("dumpvarsLogFile")) {
18 print DUMPVARS $line."\n";
20 &status("DV: ".$line);
25 my ($package,$packname) = @_;
29 if ($packname eq 'main::') {
30 &dumpvarslog("Packages");
32 foreach $symname (sort keys %$package) {
33 local *sym = $$package{$symname};
34 next unless (defined %sym);
35 next unless ($symname =~/::/);
36 &dumpvarslog(" $symname");
42 foreach $symname (sort keys %$package) {
43 local *sym = $$package{$symname};
44 next unless (defined $sym);
47 if (length($sym) > 512) {
48 &dumpvarslog("Scalar '$packname' $symname too long.");
50 &dumpvarslog("Scalar '$packname' \$ $symname => '$sym'");
56 foreach $symname (sort keys %$package) {
57 local *sym = $$package{$symname};
58 next unless (defined &sym);
60 &dumpvarslog("Function '$packname' $symname()");
65 foreach $symname (sort keys %$package) {
66 local *sym = $$package{$symname};
67 next unless (defined @sym);
69 &dumpvarslog("List '$packname' \@$symname (". scalar(@{$symname}) .")");
72 next unless ($packname eq 'main::');
73 foreach (@{$symname}) {
75 &dumpvarslog(" => '$_'.");
77 &dumpvarslog(" => <NULL>.");
83 foreach $symname (sort keys %$package) {
84 local *sym = $$package{$symname};
85 next unless (defined %sym);
86 next if ($symname =~/::/);
88 &dumpvarslog("Hash '$packname' \%$symname");
91 next unless ($packname eq 'main::');
92 foreach (keys %{$symname}) {
93 my $val = ${$symname}{$_};
95 &dumpvarslog(" $_ => '$val'.");
97 &dumpvarslog(" $_ => <NULL>.");
102 return unless ($packname eq 'main::');
104 foreach $symname (sort keys %$package) {
105 local *sym = $$package{$symname};
106 next unless (defined %sym);
107 next unless ($symname =~/::/);
108 next if ($symname eq 'main::');
110 DumpNames(\%sym,$symname)
115 if (&IsParam("dumpvarsLogFile")) {
116 my $file = $param{'dumpvarsLogFile'};
117 &status("opening fh to dumpvars ($file)");
118 if (!open(DUMPVARS,">$file")) {
119 &ERROR("cannot open dumpvars.");
124 DumpNames(%main::,'main::');
126 if (&IsParam("dumpvarsLogFile")) {
127 &status("closing fh to dumpvars");
131 &status("DV: count == $countlines");