#!/usr/bin/perl use strict; use warnings; package Obj; sub new { my $class = shift; my $self = { a => 20, }; bless $self, $class; return $self; } package main; my $obj = Obj->new; print $obj->{'a'}; #### #!/usr/bin/perl use strict; use warnings; package Obj; sub new { my $class = shift; my $self = {}; bless $self, $class; $self->initialize(); #$self->initialize($self, ); #initialize($self, ); #$self = initialize($self, ); #$self = $self->initialize($self); return $self; } sub initialize { my $self = shift; $self->{ 'a' => 10 }; } package main; my $obj = Obj->new; print $obj->{'a'}; #### #!/usr/bin/perl use strict; use warnings; package Obj; sub new { my $class = shift; my $self = {}; bless $self, $class; $self->initialize(); return $self; } sub initialize { my $self = shift; $self->{ a } = 10; return $self; } package main; my $obj = Obj->new; print $obj->{'a'};