package C;
use strict;
use base qw(model type);
1;
__END__
$ perl -e 'use C'
Base class package "model" is empty.
(Perhaps you need to 'use' the module which defines that package first.)
at C.pm line 5
BEGIN failed--compilation aborted at C.pm line 5.
####
package A;
use Spiffy -Base;
use strict;
field $_ for qw(id name);
sub new { bless {}, $self }
####
package B;
use A -Base;
use strict;
field $_ for qw(addr phone city);
sub new { bless {}, $self }
####
package C;
use A -Base;
use strict;
field $_ for qw(model type);
sub new { bless {}, $self }
####
#!/usr/bin/perl
use strict;
use B;
use C;
use Data::Dumper; $Data::Dumper::Indent = 1;
my $foo = new C;
$foo->id(123);
$foo->name("thingy");
$foo->model("Z80");
my $bar = new B;
$bar->id(456);
$bar->city("Lhasa");
$bar->name("kouxuan");
print Dumper($foo);
print Dumper($bar);
__END__
$VAR1 = bless( {
'model' => 'Z80',
'name' => 'thingy',
'id' => 123
}, 'C' );
$VAR1 = bless( {
'city' => 'Lhasa',
'name' => 'kouxuan',
'id' => 456
}, 'B' );