Overloading " &{} " is obviously the way out, but you could create your object on a sub, instead of a common hash.
ExampleClass.pm :
package ExampleClass; use strict; use warnings; use feature qw( current_sub say ); my %objects; sub new { my $class = shift; my $dummy;
The main program:
#!/usr/bin/perl use strict; use warnings; use feature qw( say ); use ExampleClass qw( ); { my $obj = ExampleClass->new(); $obj->some_attribute("value"); say $obj->some_attribute(); $obj->(qw( abc )); } { my $obj1 = ExampleClass->new(); $obj1->some_attribute("value1"); my $obj2 = ExampleClass->new(); $obj2->some_attribute("value2"); say $obj1->some_attribute(); say $obj2->some_attribute(); }
Output:
value __call__(a, b, c) value1 value2
This is basically what is called an βinside outβ object.
source share