package Thingy; sub new { my ($class, $line) = @_; my $thingy = bless {}, $class; my $pattern = $thingy->pattern; ... if ($line =~ m/$pattern/) { ... } return $thingy; } sub pattern { die "subclass should override me" }; ... package Rubber; @ISA = qw(Thingy); sub pattern { q(...) };