#!/usr/bin/perl

use strict;

package Netcomics::RLI;

package Netcomics::RLI::UserFriendly;
use vars '@ISA';
@ISA = ("Netcomics::RLI");
use vars '$id';
$id = "uf";

package KevinAndKell;
use vars '@ISA';
@ISA = ("Netcomics::RLI");
use vars '$id';
$id = "kk";

package main;

my %modules = ();

sub processSyms {
    no strict "refs";
    my $package = shift;
    foreach (keys(%{$package})) {
	if ($_ =~ /::$/ && $_ ne $package) {
	    my $subpkg = "$package$_";
	    if (grep(/^ISA$/, keys(%{$subpkg}))) {
		if (grep(/Netcomics::RLI/, @{"${subpkg}ISA"})) {
		    my $class = $subpkg;
		    $class =~ s/::$//;
		    $modules{$class} = ${"$subpkg\id"};
		}
	    } else {
		processSyms($subpkg);
	    }
	}
    }
    use strict "refs";
}

#search the whole namespace for classes of type Netcomics::RLI
processSyms("main::");

print "Subclasses of Netcomics::RLI:\n";

foreach (keys(%modules)) {
    print "$modules{$_}\t$_\n";
}

