Alex: Coderef innerhalb von new() weitergeben

Beitrag lesen

Hi,

ich möchte gerne bei der Erzeugung eines Modules mit new() gleichzeitig eine Code-Referenz an ein anderes Modul übergeben.

sub new {

my ( $self, $Web ) = @_;

croak( EC_1 ) unless $Web;

my %config;

$config{ Web }     = $Web;

my $self_ = bless( %config, $self );

$Web->add_Menu( sub { return $self_->main() }, [ "Item1", "Item2" ] );

#return bless( %config, $self );
    return $self_;
}

Sowas in der Art, leider kann ich dann die Seite im Browser nur einmal aufrufen, beim zweiten mal lädt der unendlich lang.
Das ganze Funktioniert, wenn ich

return $self->main()

als anonyme Coderef übergebe, hat aber den Nachteil, daß ich das %Config noch nicht im $self habe und somit nicht das komplette Objekt besitze.

Meine Frage ist, ob jemand ne Ahnung hat wie man sowas realisiert, bzw was der Unterschied ist in folgenden Zeilen:

$self_ = bless( %config, $self ); return $self_;
return bless( %config, $self );

danke, Alex