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";
21 &status("DV: ".$line);
26 my ($package,$packname) = @_;
30 if ($packname eq 'main::') {
31 &dumpvarslog("Packages");
33 foreach $symname (sort keys %$package) {
34 local *sym = $$package{$symname};
35 next unless (defined %sym);
36 next unless ($symname =~/::/);
37 &dumpvarslog(" $symname");
43 foreach $symname (sort keys %$package) {
44 local *sym = $$package{$symname};
45 next unless (defined $sym);
48 if (length($sym) > 512) {
49 &dumpvarslog("Scalar '$packname' $symname too long.");
51 &dumpvarslog("Scalar '$packname' \$ $symname => '$sym'");
57 foreach $symname (sort keys %$package) {
58 local *sym = $$package{$symname};
59 next unless (defined &sym);
61 &dumpvarslog("Function '$packname' $symname()");
66 foreach $symname (sort keys %$package) {
67 local *sym = $$package{$symname};
68 next unless (defined @sym);
70 &dumpvarslog("List '$packname' \@$symname (". scalar(@{$symname}) .")");
73 next unless ($packname eq 'main::');
74 foreach (@{$symname}) {
76 &dumpvarslog(" => '$_'.");
78 &dumpvarslog(" => <NULL>.");
84 foreach $symname (sort keys %$package) {
85 local *sym = $$package{$symname};
86 next unless (defined %sym);
87 next if ($symname =~/::/);
89 &dumpvarslog("Hash '$packname' \%$symname");
92 next unless ($packname eq 'main::');
93 foreach (keys %{$symname}) {
94 my $val = ${$symname}{$_};
96 &dumpvarslog(" $_ => '$val'.");
98 &dumpvarslog(" $_ => <NULL>.");
103 return unless ($packname eq 'main::');
105 foreach $symname (sort keys %$package) {
106 local *sym = $$package{$symname};
107 next unless (defined %sym);
108 next unless ($symname =~/::/);
109 next if ($symname eq 'main::');
111 DumpNames(\%sym,$symname)
116 if (&IsParam("dumpvarsLogFile")) {
117 my $file = $param{'dumpvarsLogFile'};
118 &status("opening fh to dumpvars ($file)");
119 if (!open(DUMPVARS,">$file")) {
120 &ERROR("cannot open dumpvars.");
125 DumpNames(%main::,'main::');
127 if (&IsParam("dumpvarsLogFile")) {
128 &status("closing fh to dumpvars");
132 &status("DV: count == $countlines");