Ignoring the mistake which you have since fixed, posting a runnable example of your problem is invaluable. At best we can extrapolate what we *thin* you code might look like in a runable form, and try that -- in my case, it works fine...
#!/bin/perl -l
use warnings;
use strict;
package Bar;
sub new {
print STDERR "Bar'ed";
my $class = shift;
my $self = {};
bless $self, $class;
}
package Foo;
use base qw/Bar/;
sub new {
print STDERR "Foo'ed";
my $class = shift;
my $self = $class->SUPER::new(@_);
bless $self, $class;
return $self;
}
my $foo = Foo->new;
print ref($foo); # gives "Foo"
...Produces...
hossman@bester:~$ perl ~/tmp/monk.pl
Foo'ed
Bar'ed
Foo