我正在使用 Damian Conway 的“由内而外”的对象,正如他在他的精彩著作Perl Best Practices中所描述的那样,为我的客户的安全系统构建面向对象的接口。我遇到了在我通常指定为“_some_method”的模块中使用内部辅助方法的需要。但是,这似乎破坏了封装,因为它们可以通过包名直接调用。有没有办法让这些方法真正私有化?举个例子,
use SOD::MyOOInterface;
my $instance1 = SOD::MyOOInterface->new();
$instance1->_some_method; #this produces an error:
SOD::MyOOInterface::_some_method; # this results in a
# successful method call
显然我不希望 _some_method 的直接调用成功。有没有办法保证这一点?