3 BEGIN { unshift @INC, '.' ;
4 $SIG{__WARN__}=sub {return "" if $_[0] =~ /used only once/; print @_;};
7 use Devel::Symdump::Export qw(filehandles hashes arrays);
22 @prefices{qw(filehandles dirhandles packages)}=("") x 3;
25 format i_am_the_symbol_printing_format_lest_there_be_any_doubt =
28 ~~ ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
33 $~ = 'i_am_the_symbol_printing_format_lest_there_be_any_doubt';
35 @a = packsort(filehandles('main'));
40 $a eq "main::DATA main::Hmmmm main::STDERR main::STDIN main::STDOUT main::stderr main::stdin main::stdout"
42 $a eq "main::ARGV main::DATA main::Hmmmm main::STDERR main::STDIN main::STDOUT main::i_am_the_symbol_printing_format_lest_there_be_any_doubt main::stderr main::stdin main::stdout",
46 @a = packsort(hashes 'main');
52 $a eq "^H + - @ ENV INC SIG" # + named capture 29682
54 $a eq "^H + @ ENV INC SIG" # + named capture 28957
56 $a eq "^H @ ENV INC SIG" # ^H hints 27643 (?)
64 @a = packsort(arrays());
69 $a, "/main::INC.*main::_.*main::a/"
73 @a = Devel::Symdump->really_bogus('main');
77 "/^invalid Devel::Symdump method: really_bogus\(\)/",
80 $sob = rnew Devel::Symdump;
83 for (active_packages($sob)) {
88 "/Carp.*Devel.*Devel::Symdump.*Devel::Symdump::Export.*DynaLoader.*Exporter.*Hidden.*big::long::hairy.*funny::little.*strict/");
91 for (active_modules($sob)) {
94 $a = join " ", keys %m;
96 ok (exists $m{"Carp"} &&
97 exists $m{"Devel::Symdump"} &&
98 exists $m{"Devel::Symdump::Export"} &&
99 exists $m{"Exporter"} &&
100 exists $m{"strict"} &&
103 # Cannot test on the number of packages and functions because not
104 # every perl is built the same way. Static perls will reveal more
105 # packages and more functions being in them
106 # Testing on >= seems no problem to me, we'll see
108 # (Time passes) Much less unknowns in version 1.22 (perl5.003_10).
111 packages 13 scalars 28 arrays 7 hashes 5 functions 35 filehandles 9
112 dirhandles 2 unknowns 53
115 #we don't count the unknowns. Newer perls might have different outcomes
118 scalars arrays hashes
119 functions filehandles dirhandles
121 next unless @syms = $sob->$type();
123 if ($I_REALLY_WANT_A_CORE_DUMP) {
124 # if this block execute , mysteriously COREDUMPS at for() below
125 # NOT TRUE anymore (watched by Andreas, 15.6.1995)
126 @vars = ($type eq 'packages') ? sort(@syms) : packsort(@syms);
128 if ($type eq 'packages') {
131 @syms = packsort(@syms);
135 ok (@syms >= $Expect{$type});
144 for $pack ("main", $ob->packages) {
146 defined &{ "$pack\::import" } ||
147 defined &{ "$pack\::AUTOLOAD" } ||
148 defined @{ "$pack\::ISA" } ||
149 defined @{ "$pack\::EXPORT" } ||
150 defined @{ "$pack\::EXPORT_OK"}
153 push @modules, $pack;
156 return sort @modules;
159 sub active_packages {
164 for $pack ($ob->packages) {
165 $pob = new Devel::Symdump $pack;
166 if ( $pob->scalars() ||
170 $pob->filehandles()||
174 push @modules, $pack;
177 return sort @modules;
183 s/([\200-\377])/ 'M-' . pack('c', ord($1) & 0177 ) /eg;
184 s/([\000-\037\177])/ '^' . pack('c', ord($1) ^ 64 ) /eg;
189 my (@vars, @pax, @fullnames);
192 my($pack, $name) = /^(.*::)(.*)$/s;
195 push(@fullnames, $_);
200 ($pax[$a] ne 'main::') <=> ($pax[$b] ne 'main::')
202 $pax[$a] cmp $pax[$b]
204 $vars[$a] cmp $vars[$b]
211 $big::long::hairy::thing++;
212 sub Devel::testsub {};
214 opendir(funny::little::imadir, '/');
215 $i_am_a_scalar_variable = 1;
216 open(Hmmmm, ">/dev/null");
217 open(Hidden::FH, ">/dev/null");