package TextClass; sub TextFilter { my $self = shift; my ( $sRef ) = @_; # Make the author BIG, BIG, BIG $$sRef =~ s,(Author\:.*?),<font size=10>$1</font>,gs; my ( $authorName ) = m,Author:(.*?),; my $info = $self->GetSpecialAuthorInfo( $authorName ); # concatenate special info $$sRef .= $info; return $results = $$sRef; } # Empty (Abstract) base class method sub GetSpecialAuthorInfo { my $self = shift; # not really required here return ""; } package SomeSubclass; use TextClass (); use vars qw( @ISA ); @ISA = qw( TextClass ); sub TextFilter { my $self = shift; my ( $sRef ) = @_; my $results = $self->SUPER::TextFilter( $sRef ); return $results; } # Implement Abstract Base Class method because this # is a collection that supports this data sub GetSpecialAuthorInfo { my $self = shift; # not really required here my $author = shift; my $info = &GetAuthorInfo( $author ); &Htmlize( \$info ); return $info; } 1; #!/l/local/bin/perl use TextClass; use SomeSubclass; # if compile time binding require "SomeSubclass.pm"; # if run time binding my $subclassObject = SomeSubclass->new( $collid ); my $text = 'Author: Phil Farber'; $subclassObject->TextFilter( \$text ); exit;