package Foo; sub new { ... } sub bar { ... = new Some::Object( ... ); # You meant # ... = Some::Object->new( ... ); # but you got # ... = Foo::new( "Some::Object", ... ) }