Schrift
[thread]11531[/thread]

Referenz statt eval "basteln"



<< >> 5 Einträge, 1 Seite
Tr0Nix
 2008-03-27 22:24
#107566 #107566
User since
2006-11-21
44 Artikel
BenutzerIn
[default_avatar]
Hallo zusammen

Annahme: wir haben ein Modul test.pm welches die Methode "test_start" standardmässig exportiert. Der Name des Modules kann wechseln, die Methodennamen bleiben jedoch konstant.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
my $module = "test";

eval("use $module");

# Weg 1:
eval("test_start;");

# Weg 2:
my $func = $module ."_start";
my $ref = \&$func;
&$ref("irgendwas");


Kann man den Weg 2 irgendwie noch schönen, ohne dass "strict refs" sich darüber mockiert wie wenn ich:
&$func("irgendwas");

Direkt aufrufe?

Grüsse
tr0nix
betterworld
 2008-03-27 22:51
#107567 #107567
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
Warum muss der Modulname denn in dem Funktionsnamen auftauchen? Lass ihn doch einfach weg, dann kannst Du $module->test() schreiben.
renee
 2008-03-27 23:35
#107574 #107574
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Oder mit can holen:

Code (perl): (dl )
1
2
my $sub = $module->can( $module . '_start' );
$sub->() if $sub;
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Tr0Nix
 2008-03-27 23:40
#107575 #107575
User since
2006-11-21
44 Artikel
BenutzerIn
[default_avatar]
@betterworld: wurde bisher so designed, ich muss mal abwägen wieviel Aufwand es ist dies umzuschreiben. Aber recht hast natürlich!

@renee: kannte ich auch noch nicht, les ich mich mal rein danke :)
Tr0Nix
 2008-03-29 19:30
#107624 #107624
User since
2006-11-21
44 Artikel
BenutzerIn
[default_avatar]
Hallo zusammen!

Danke, konnte es umbasteln :)! Ist schöner so.

Gruess & danke
<< >> 5 Einträge, 1 Seite



View all threads created 2008-03-27 22:24.