Schrift
[thread]7398[/thread]

Funktionsname in Variable: Wie geht das?



<< >> 9 Einträge, 1 Seite
pktm
 2005-10-26 00:12
#59311 #59311
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hallo!

Ich möchte gerne zwei Funktionen die das Selbe tun, aber, abhängig davon, welche Methode sie aufruft unterschiedliche andere Methoden aufrufen zusammen legen.

$self->ziel(); wäre z.B. so ein Aufruf. Jetzt soll der Aufruf bei einer anderen Methode aber nicht $self->ziel(); sein, sondern $self->ziel2().

Kann ich es irgendwie anstellen, dass ich so etwas in der Art $self->$funktionsname(); ans Laufen bekomme?
http://www.intergastro-service.de (mein erstes CMS :) )
esskar
 2005-10-26 00:53
#59312 #59312
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
Code: (dl )
1
2
3
4
5
6
7
8
sub call {
  my ($self, $method) = @_;
  $self->$method;
}


$self->call('ziel');
$self->call('ziel2');
\n\n

<!--EDIT|esskar|1130277764-->
pktm
 2005-10-26 01:03
#59313 #59313
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Danke. Ich nehme mal an, dass 1. das no strict 'refs'; nur auf den Scope der Methode call() beschränkt ist und 2. die () am Ende eines Aufrufes ohne Parameter optional sind?
http://www.intergastro-service.de (mein erstes CMS :) )
pq
 2005-10-26 01:17
#59314 #59314
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=pktm,25.10.2005, 22:12]Kann ich es irgendwie anstellen, dass ich so etwas in der Art $self->$funktionsname(); ans Laufen bekomme?[/quote]
ja, genau so. was hat dich gehindert, es auszuprobieren?
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
betterworld
 2005-10-26 01:55
#59315 #59315
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
[quote=pq,25.10.2005, 23:17][quote=pktm,25.10.2005, 22:12]Kann ich es irgendwie anstellen, dass ich so etwas in der Art $self->$funktionsname(); ans Laufen bekomme?[/quote]
ja, genau so. was hat dich gehindert, es auszuprobieren?[/quote]
strict ;-)\n\n

<!--EDIT|betterworld|1130277411-->
pq
 2005-10-26 01:58
#59316 #59316
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=betterworld,25.10.2005, 23:55][quote=pq,25.10.2005, 23:17][quote=pktm,25.10.2005, 22:12]Kann ich es irgendwie anstellen, dass ich so etwas in der Art $self->$funktionsname(); ans Laufen bekomme?[/quote]
ja, genau so. was hat dich gehindert, es auszuprobieren?[/quote]
strict ;-)[/quote]
kann nicht sein. $object->$method ist strict-safe.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
betterworld
 2005-10-26 02:02
#59317 #59317
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
ok, die Runde geht an pq
pktm
 2005-10-26 13:02
#59318 #59318
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Ein Hash hat mich gehindert!
Habe mir meine Versuche nochmal angesehen.
Die Argumente meiner Methode habe ich mit my %args = @_; ausgelesen.
Dann noch der Aufruf return $self->$args{'-ziel'}(); und schon erhalte ich:
Quote
[Wed Oct 26 10:52:50 2005] AP_Admin.cgi: syntax error at C:/apache/cgi-bin/cms/admin/../../pm/CMS/ADMIN/AP_Admin.pm line 774, near "$args{"
[Wed Oct 26 10:52:50 2005] AP_Admin.cgi: syntax error at C:/apache/cgi-bin/cms/admin/../../pm/CMS/ADMIN/AP_Admin.pm line 775, near "}"
[Wed Oct 26 10:52:50 2005] AP_Admin.cgi: Compilation failed in require at AP_Admin.cgi line 10.
[Wed Oct 26 10:52:50 2005] AP_Admin.cgi: BEGIN failed--compilation aborted at AP_Admin.cgi line 10.


Wenn ich hingegen
Code: (dl )
1
2
    my $z = $args{'-ziel'};
   return $self->$z();

schreibe geht es.

Woran liegt das?

Grüße, pktm
http://www.intergastro-service.de (mein erstes CMS :) )
pq
 2005-10-26 21:59
#59319 #59319
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=pktm,26.10.2005, 11:02]Woran liegt das?
[/quote]
es liegt daran, dass es so nicht erlaubt ist, ganz einfach.\n\n

<!--EDIT|pq|1130349604-->
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
<< >> 9 Einträge, 1 Seite



View all threads created 2005-10-26 00:12.