Schrift
[thread]11747[/thread]

Dynamisches laden von Modulen



<< >> 3 Einträge, 1 Seite
styx-cc
 2008-05-04 21:39
#109191 #109191
User since
2006-05-20
533 Artikel
BenutzerIn

user image
Holla,

eine kleine Frage:

Dieses Konstrukt funktioniert so nicht, er bleibt bei Zeile 11 haengen:
Code: (dl )
[DIE] Can't locate object method "new" via package "Form::Show" (perhaps you forgot to load "Form::Show"?) at Form/Allocator.pm line 29.


Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
sub allocate {
  my $self = shift;
  #my $load_package = ucfirst($self->get_cmd);
  my $load_package = 'Show';

  #require Form::Show;
  #Form::Show->new($self->get_parameters);

  eval { 
    "use Form::" .$load_package;
    "Form::$load_package" ->new($self->get_parameters);
  };
 die("[DIE] $@") if $@;
}#sub allocate


Dieses Konstrukt hingegen laeuft ohne Fehler:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
sub allocate {
  my $self = shift;
  #my $load_package = ucfirst($self->get_cmd);
  my $load_package = 'Show';

  require Form::Show;
  Form::Show->new($self->get_parameters);

  #eval { 
   # "use Form::" .$load_package;
    #"Form::$load_package" ->new($self->get_parameters);
  #};
  #die("[DIE] $@") if $@;
}#sub allocate


Kann mir jemand erklaeren, wie ich Perl dazu bekommen mich Objekte dynamisch initialisieren zu lassen?

vielen Dank
und freundliche Gruesse
Pörl.
moritz
 2008-05-04 21:44
#109192 #109192
User since
2007-05-11
923 Artikel
HausmeisterIn
[Homepage]
user image
styx-cc+2008-05-04 19:39:08--
Holla,

eine kleine Frage:

Dieses Konstrukt funktioniert so nicht, er bleibt bei Zeile 11 haengen:
Code: (dl )
[DIE] Can't locate object method "new" via package "Form::Show" (perhaps you forgot to load "Form::Show"?) at Form/Allocator.pm line 29.


Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
sub allocate {
  my $self = shift;
  #my $load_package = ucfirst($self->get_cmd);
  my $load_package = 'Show';

  #require Form::Show;
  #Form::Show->new($self->get_parameters);

  eval { 
    "use Form::" .$load_package;
    "Form::$load_package" ->new($self->get_parameters);
  };
 die("[DIE] $@") if $@;
}#sub allocate


Kein Wunder, du musst dich schon zwischen String-Eval und Block-Eval entscheiden.

Sowas hier ginge zum Beispiel:

Code (perl): (dl )
1
2
my $obj = eval "use Form::$load_package;\n
Form::$load_package->new(\$self->get_parameters);";
styx-cc
 2008-05-04 21:50
#109193 #109193
User since
2006-05-20
533 Artikel
BenutzerIn

user image
Okay,so funktionierts schon mal. Danke.

Ich werd mir mal die Doku von eval noch mal anschauen!

MfG

edit: ach, jetzt versteh ich es.. *ditsch
Pörl.
<< >> 3 Einträge, 1 Seite



View all threads created 2008-05-04 21:39.