Single-File Inheritance



I am trying to do the Right Thing and write a data-processing program
using lofty Object-Oriented principles, instead of my usual lazy
procedural ways, but I am having trouble with putting multiple class
packages into one file. I started out using just one file for
convenience while I develop a framework, and then was planning on
splitting the file into separate modules once I got the basics working.

I am trying to read some data files that have the same format in the
first 6 lines, then have different data records in subsequent lines. I
thought I would write a parent class that reads the header lines, then
child classes to read and parse subsequent lines.

Here is the result:

% cat single.pl
#!/usr/local/bin/perl
use strict;
use warnings;

my $file = ConfigFile->new(); # line 5

package DataFile;

sub new
{
my($class) = shift;
my $self = {};
bless $self, $class;
return $self;
}

package ConfigFile;
our @ISA = qw( DataFile );


% perl single.pl
Can't locate object method "new" via package "ConfigFile" at single.pl
line 5.


% perl -v
This is perl, v5.10.1 (*) built for darwin-2level

If I put the packages in separate files, it works (compiles and runs).
I am almost sure that I have done this type of thing before, and I
can't find any documentation that says I can't.

Should I be able to put multiple packages in a single file and use
inheritance for two of those packages?

Thanks.

--
Jim Gibson
.



Relevant Pages