BazB has asked for the wisdom of the Perl Monks concerning the following question:
How would I go about creating a module that uses both OO and functional interfaces?
I tend to supply named arguments, and I get an error warning that there is an odd number of arguments in a hash assignment if I use a subroutine expecting $self as it's first argument.
I wouldn't think checking that the first argument is a reference is a solution - making pass-by-reference awkward is a Bad Thing :)
Below is a sample of _rough_ code that will only work as OO - how can it be transformed to work as a functional or OO module (like CGI.pm, for example - which I can't figure out :-) ).
Cheers.package Foo; # use Modules; # set up @EXPORT, @EXPORT_OK etc for functional interface sub new { my $class = shift; my $self = {}; bless ($self, $class); } sub print_args { my $self = shift; my %args = @_; print $args{'foo'}, $args{'bar'}, "\n"; } package Bar; $obj = Foo->new(); $obj->Foo::print_args(foo => "Perl", bar => "Monks"); exit;
BazB
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Creating modules with OO and functional interfaces.
by broquaint (Abbot) on May 14, 2002 at 11:58 UTC | |
Re: Creating modules with OO and functional interfaces.
by ariels (Curate) on May 14, 2002 at 11:42 UTC | |
Re: Creating modules with OO and functional interfaces.
by particle (Vicar) on May 14, 2002 at 12:39 UTC | |
Re: Creating modules with OO and functional interfaces.
by chromatic (Archbishop) on May 14, 2002 at 14:50 UTC | |
Re: Creating modules with OO and functional interfaces.
by cfreak (Chaplain) on May 14, 2002 at 13:22 UTC | |
Re: Creating modules with OO and functional interfaces.
by Anonymous Monk on May 14, 2002 at 21:15 UTC |
Back to
Seekers of Perl Wisdom