# ************************************************** # ************************************************** # ************************************************** # ************************************************** # # In the file TextClass.pm # # ************************************************** package TextClass; # ---------------------------------------------------------------------- # NAME : new # PURPOSE : create new TextClass object # # CALLED BY : main # CALLS : TextClass->_initialize # NOTES : # ---------------------------------------------------------------------- sub new { my $class = shift; my $self = {}; # Note 2 parameter form of 'bless' allows inheritance bless $self, $class; $self->_initialize( @_ ); return $self; } # ---------------------------------------------------------------------- # NAME : _initialize # CALLED BY : new # INPUT : see new # ---------------------------------------------------------------------- sub _initialize { my $self = shift; my ( $collid ) = @_; $self->{'baseclass data key'} = 'base class value'; } # ---------------------------------------------------------------------- # NAME : TextFilter # CALLS : SUPER # NOTES : OVERRIDE the TextClass::TextFilter # ---------------------------------------------------------------------- sub TextFilter { my $self = shift; my ( $sRef ) = @_; # Make the author BIG, BIG, BIG $$sRef =~ s,(Author\:.*?),<font size=10>$1</font>,gs; return $results = $$sRef; } # ************************************************** # ************************************************** # ************************************************** # # In the file SomeSubclass.pm # # ************************************************** package SomeSubclass; use TextClass (); use vars qw( @ISA ); # Subclass of TextClass.pm module @ISA = qw( TextClass ); # ---------------------------------------------------------------------- # NAME : _initialize # PURPOSE : create structure for TextClass object # CALLED BY : new # INPUT : see new # NOTES : overrides Base Class _initialize # ---------------------------------------------------------------------- sub _initialize { my $self = shift; $self->SUPER::_initialize( @_ ); $self->{'baseclass data key'} = 'some other value'; } # ---------------------------------------------------------------------- # NAME : TextFilter # PURPOSE : # : # CALLS : SUPER # INPUT : $sRef (reference to search result string # NOTES : OVERRIDE the TextClass::TextFilter method to handle # : Notes filtering # ---------------------------------------------------------------------- sub TextFilter { my $self = shift; my ( $sRef ) = @_; # This is the note anchor of ptr-type notes $self->Filter_PTR_NotesForText( $cgi, $collid, $sRef ); my $results = $self->SUPER::TextFilter( $sRef ); # excise the 'Availability' table row. $results =~ s,(Author\:.*?)<tr.*?<strong>Availability\:.*?</tr>,$1,; return $results; } 1; # ************************************************** # ************************************************** # ************************************************** # # In the file text-idx (main program # # ************************************************** #!/l/local/bin/perl use TextClass; use SomeSubclass; # if compile time binding require "SomeSubclass.pm"; # if run time binding # Create an instance (object) of Class SomeSubclass my $subclassObject = SomeSubclass->new( $collid ); my $text = 'Author: Phil Farber'; # Pass text data to object to filter it $subclassObject->TextFilter( \$text ); exit;