package SomeClass; use Class::Std::Utils; { my %name_of; sub new { my ($class, $name) = @_; my $new_object = bless \do{my $anon_scalar}, $class; $name_of{ident $new_object} = $name; return $new_object; } sub get_name { my ($self) = @_; return $name_of{ident $self}; } } #### package SomeClass; { # All I need: my $data; sub new { my ($class, $name) = @_; my $scalref; my $new = bless \$scalref, $class; my $addr = norm($new); $data->{$addr} = { name => $name, obj => $new, }; $new } sub get { my $self = shift; my $arg = shift; $self = norm($self); $data->{$self}{$arg}; } sub set { my $self = shift; my ($key, $val) = @_; $self = norm($self); $data->{$self}{$key} = $val; } sub norm { my $address = ($_[0] =~ /\(?x(\w+)/)[0] } } #### #!/usr/bin/perl use strict; use SomeClass; my$_1 = SomeClass->new('ok, creation of obj 1'); my$_2 = SomeClass->new('ok, creation of obj 2'); print $_1->get('name'), $/; print $_2->get('name'), $/; $_1->set('name', 'object _1 new attr value'); $_2->set('name', 'object _2 new attr value'); print $_1->get('name'), $/; print $_2->get('name'), $/; print $_2->{'name'}, $/;