http://www.perlmonks.org?node_id=954452


in reply to Re^3: Module provides both of functional interface and object-oriented one
in thread Module provides both of functional interface and object-oriented one

If a module looks as follows:
package Foo; @EXPORT_OK = qw(get_foo); sub new { # constructer } sub get { # for OO interface } sub get_foo { # for procedural interface } 1;
users may write as follows:
$o = Foo->new(); $o->get($key); # of cource, $value $o->get_foo($key); # what's this?
If users choose OO interface, they shouldn't be able to call 'get_foo' method. How can I solve this problem?

Replies are listed 'Best First'.
Re^5: Module provides both of functional interface and object-oriented one
by Anonymous Monk on Feb 17, 2012 at 10:49 UTC

    If users choose OO interface, they shouldn't be able to call 'get_foo' method. How can I solve this problem?

    I'm not very well versed in Perl's OO, so someone please correct me if I'm wrong, but I don't think you can forbid users from calling it. The only thing you can do is throw an error on unexpected arguments.

    (There is a convention that a class's private methods' names begin with the underscore character, though.)