crouchingpenguin has asked for the wisdom of the Perl Monks concerning the following question:

After seeing characterstics of private in perl it reminded me of a project I had been working on where I had used the following to create a private like method:

package Foo; use strict; use warnings; my $_init_ = sub { my $self = shift; print STDERR ref($self) . "::_init_ called\n"; }; sub new { my $type = shift; my $class = ref($type) || $type; my $self = { attribute1 => undef, attribute2 => undef, }; bless $self,$class; $self->$_init_(); return $self; } 1;

And then the usage went like this:

#!/usr/bin/perl use strict; use warnings; use Data::Dumper; use lib "./"; use Foo; my $foo = new Foo(); print Dumper(\$foo),"\n";

And I was able to subclass as needed, such as:

package Bar; use strict; use warnings; use base qw( Foo ); 1;

With the useage similar to the Foo usage:

#!/usr/bin/perl use strict; use warnings; use Data::Dumper; use lib "./"; use Bar; my $bar = new Bar(); print Dumper(\$bar),"\n";

My question is, will this cause problems down the line when the application as a whole gets really complex? Is this safe and if not, why?

"Never be afraid to try something new. Remember, amateurs built the ark. Professionals built the Titanic."