2009/3/11 Jim Gibson <jimsgib...@gmail.com>: > On 3/11/09 Wed Mar 11, 2009 5:28 AM, "Dermot" <paik...@googlemail.com> > scribbled: > >> 2009/3/11 Dr.Ruud <rvtol+use...@isolution.nl>: >>> Dermot wrote: >>> >>>> I created a small Class, initially with Moose. When I wanted an >>>> instance of the class I would call `my $instance = new MyClass`; >>>> >>>> I then removed Moose and went for a standard Perl 00 constructor: >>>> >>>> sub new { >>>> my $class = shift; >>>> my $self = {}; >>>> $self->{config} = _get_config(); >>>> bless ($self, $class); >>>> return $self; >>>> } >>>> >>>> I haven't changed the way I created an instance, and it still works. I >>>> would have thought I would have to create instances now with >>>> >>>> my $instance = MyClass->new; >>>> >>>> Are both assignments legit? >>> >>> There is even a third way: >>> >>> MyClass::->new >>> >>> and a fourth way: >>> >>> MyClass::->new() >> >> So do they all amount to the same thing? I can see that the 4th way >> would allow you to pass arguments. When you read the docs for modules >> they (all the one's I can recall) show either >> >> my $inst = new Some::Module; >> >> or >> >> my $inst = Some::Module->new; >> >> I thought there was some black art to allow you to make a constructor >> work with the first example. > > They are mostly equivalent (you can add argumets to the first call, too). > There are potential compiler problems with the first form, as it is more > difficult for the compiler to figure out which package's new method should > be called if you generate the module name with a function or constant. For > this reason, the form Some::Module->new() is preferred. > > See "Object Oriented Perl", by Damian Conway, pp 98 for details.
I see. Thanx. Dp. -- To unsubscribe, e-mail: beginners-unsubscr...@perl.org For additional commands, e-mail: beginners-h...@perl.org http://learn.perl.org/