in reply to Re: Procedural vs OOP modules
in thread Procedural vs OOP modules
Actually you can share state in the package variables, but only one set of them.
This pattern is similar to a singleton object in OOP.
(The modular interface of Data::Dumper is a good example for that, with the global config vars, like $Data::Dumper::Indent )
But you are right, a very good reason to use methods instead of functions is if they all start to look like this
package Do_Something my %repeated = init(); foo( X, %repeated); bar( Y, %repeated); ...
then it's obviously better to write
my $obj = Do_Something->new(%init); $obj->foo(X); $obj->bar(Y);
especially if there is a chance that you might need to have different initializations in the same code
my $obj2 = Do_Something->new(%other_init);
( see Data::Dumper again with it's alternative OOP interface, where the configs are encapsulated in the objects like $OBJ->Indent([NEWVAL]) or $OBJ2->Indent([NEWVAL]) )
On a side note: I prefer to think about objects like actors which do things, not containers which have attributes.
So reducing them to shared data is not the whole picture.
Last but not least: PBP lists some criteria when to use what...
Cheers Rolf
(addicted to the Perl Programming Language :)
Wikisyntax for the Monastery
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^3: Procedural vs OOP modules
by The Perlman (Scribe) on Oct 29, 2021 at 00:38 UTC | |
by LanX (Saint) on Oct 29, 2021 at 08:50 UTC |