Ich steig noch nicht so ganz durch, wie ich bei dieser Methode ein Attribut als Hash oder Array deklarieren muss.
M.E. immer als Hash, weil der Pfiff bei Inside-Out-Objekten ja gerade der ist, dass die Identifizierung eines Objektes nicht über eine Hashreferenz (klassisch), sondern über eine Scalarreferenz erfolgt. Daher müsstest Du für jede Eigenschaft einen Hash anlegen, dessen Schlüssel die Scalarreferenz ist.
use Class::Std::Utils;
{
my %my_hash;
my %my_array;sub new{
my ($class) = @_;
my $new_object = bless anon_scalar(), $class;
$name_of{ident $new_object} = {};
# wie erstelle ich hier jetzt aus %my_hash ein Hash und aus %my_array ein Array?
}
}
Kommt drauf an, was %my\_hash und %my\_array sein sollen. Repräsentieren sie die Werte von Eigenschaften? Dann könnte das so aussehen:
~~~perl
$name_of{ident $new_object} = \%my_hash;
# oder
$name_of{ident $new_object} = \%my_array;
Sollen es dagegen Eigenschaften sein, könnte es so aussehen:
$my_hash{ident $new_object} = {};
# oder für %my_array
$my_array{ident $new_object} = [];
Da Du offenbar bei der Inside-Out-Technik noch am Anfang stehst, solltest Du vielleicht erstmal einen Bogen um die CPAN-Module machen und es von Hand programmieren (zum grundlegenden Verständnis finde ich Inside-out Objects von Randal L. Schwartz sehr gut). Ich bin auch kein Experte auf dem Gebiet und lasse von daher sowas wie Class::InsideOut oder Object::InsideOut erstmal außen vor.
Siechfred
Hinter den Kulissen passiert viel mehr, als man denkt, aber meistens nicht das, was man denkt.