package Processor;
# constructor in base class only
sub new {
my $pkg = shift;
bless {}, $pkg;
}
# init, process, finish in subclasses
1;
####
package Processor::SomeSubClass;
@ISA = ( Processor );
sub init {
my $self = shift;
# do something
}
# should be called process_line
# this one upcases it
sub process {
my $self = shift;
my $line = shift;
return uc( $line );
}
sub finish {
my $self = shift;
# do something
}
1;
####
#!/usr/bin/perl
use Processor;
use Processor::SomeSubClass;
my $p = Processor::SomeSubClass->new();
$p->init;
while (<>) {
print $p->process( $_ );
}
$p->finish;