2
Ich versuche, Class1
Resource1
Attribut hinzuzufügen, welcher Wert test
ist. Allerdings funktioniert es nicht. Was ist falsch in meinem Code?Wie fügt man ein Attribut dynamisch hinzu, wenn es nicht existiert? Perl AUTOLOAD und Moose :: Meta :: Class?
package Class1;
use Moose;
sub AUTOLOAD {
my $self = shift;
our $AUTOLOAD;
my $unknown_method_name = (split(/::/, $AUTOLOAD))[-1];
require Class2; # generator class
Class2->generate_one($self, $unknown_method_name);
}
package Class2;
use Moose;
sub generate_one {
my ($self, $object, $p) = @_;
$object->meta->add_attribute(
$p => {
is => 'ro',
default => 'test',
lazy => 1
}
);
}
package main;
my $a = Class1->new;
warn $a->Resource1; # must be 'test' but showing Moose::Meta::Attribute=HASH(0x333ca10)
Ein paar Sätze der Erklärung sind hier angemessen – Borodin