MyHuman ------------------------------------------- humanthingysub myStorableBase ------------------------------------------- name phone pobject email parentthingysub id Class::PObject::Template ------------------------------------------- errstr remove __props save logtrc new load fetch count confess () columns dump remove_all ("" get set logconfig __driver croak carp drop_datasource #### #!/usr/bin/perl use MyHuman; my $person = MyHuman->new(); $person->name('bob'); $person->email('bob@bob.com'); $new_id = $person->save() or die "save bork"; my $newperson = MyHuman->load($new_id) or die "reload bork";; print "reload OK\nname is: ".$person->name()."\n"; #### #!/usr/bin/perl use strict; use warnings; no strict 'refs'; =pod # Class/Object Method Lister # on Jan 18, 2004 at 21:03 = by stvn # if you want certain methods ignored, # put their names in this string =cut my $IGNORE = ""; require MyHuman; printFlatClassView("MyHuman"); print "\n"; printExpandedClassView("MyHuman"); print "\n"; ## ------------------------------------------------------------------ sub getClassMethodList { my $class = shift; return grep { !/^($IGNORE)$/ && defined &{"${class}::$_"} } keys %{"${class}::"}; } ## ------------------------------------------------------------------ sub getCompleteClassMethodList { my ($class) = @_; my @methods = getClassMethodList($class); push @methods => map { getCompleteClassMethodList($_) } @{"${class}::ISA"}; return @methods; } ## ------------------------------------------------------------------ sub printExpandedClassView { my ($class, $tab_count) = @_; $tab_count ||= 0; if ($tab_count) { my $t = ("\t" x $tab_count); print "${t}$class\n"; print "${t}-------------------------------------------\n$t"; print join "\n${t}", getClassMethodList($class); print "\n"; } else { print("$class\n"); print "-------------------------------------------\n"; print join "\n" => getClassMethodList($class); print "\n"; } map { printExpandedClassView($_, $tab_count + 1) } @{"${class}::ISA"}; } sub printFlatClassView { my ($class) = @_; print("$class\n"); print "-------------------------------------------\n"; my %method = map { $_ => 1 } getCompleteClassMethodList($class); print join "\n" => keys %method; print "\n"; } ## ------------------------------------------------------------------ 1;