perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 22
Click for quality!




11.02.2012 / 16:23

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


BeitragSubroutine aufrufen
Seitenanfang
Hallo!

Ich mochte einen variablen Aufruf einer Subroutine kreieren. Leider funktioniert das nicht.

Im Hash-Key $hash{'sub'} befindet sich der Wert "uebersicht" oder der Wert "detail". Nun soll je nachdem ob der Wert uebersicht oder detail ist die zugehörige Subroutine &uebersicht; oder &detail; aufgerufen werden.

Mit &{$hash{sub}} funktioniert das soweit, wenn ich allerdings strict benutze (und das tue ich) bekomme ich den Fehler: "Can't use string ("uebersicht") as a subroutine ref while "strict refs" in use at..."

Weis jemand Abhilfe?

mfg, Speed

Datum: 26.03.2007-18:57

Beitragre: Subroutine aufrufen
Seitenanfang
siehe den erst kürzlich erstellten Thread:

http://www.perlunity.de/cgi-bin/forum/forum_thread_linear.cgi?tid=19861&mid=40218&fid=8&pn=0

Datum: 26.03.2007-19:56

Beitragre: Subroutine aufrufen
Seitenanfang
So hatte ichs vorher ;-) Habe genau wie auch der andere Member nach einer Möglichkeit gesucht, ohne alle subnames einpflegen zu müssen und mir den zusätzlichen Hash zu sparen.

Trotzdem danke ;-)

Datum: 26.03.2007-20:34

Beitragre: Subroutine aufrufen
Seitenanfang
Was ist denn von der Preformance her besser, ein Baum mit if-Abfrage

if ($action eq "daten"){&daten;}
elsif ($action eq "daten_speichern"){&daten_speichern;}
else{&daten;}

oder die von dir gezeigte Variante mit dem Hash

my %actions = ( 'daten' => \&daten, 'daten_exe' => \&daten_exe);
$query{'action'} ? $actions{$query{'action'}}->() : &daten;

mfg

Datum: 27.03.2007-15:09

Beitragre: Subroutine aufrufen
Seitenanfang
Das mit dem Hash ist die *beste* Lösung. Eine unschöne Lösung ist es, strict für den kleinen Codeteil auszuschalten:

my $sub = "daten";
{
no strict 'refs';
&{$sub};
}

Datum: 28.03.2007-13:27

Beitragre: Subroutine aufrufen
Seitenanfang
Hmm von der Laufzeit wärs sicher am besten denke ich, aber ich möchte in absehbarer Zeit auf mod_perl umrüsten und somit use strict im vollen Umfang verwenden.

Datum: 28.03.2007-14:21

-






-
-