in reply to Directory Structure

Try inserting

use lib '..';
at top of a.pl if your start this program in directory A. It might be useful to add the absolute path - if possible. See lib.

new package1() doesn't look right. One would have expected something along my $obj1 = B::b->new();? Furthermore, unless b is a pragma, it is common to use capitalised module names (here: B::B, see perlmod).
But maybe this is just a problem of the example?