Subroutine ausführen, Name im Skalar
    
Take
    
    
      
    
  - perl
 
Hallo,
ich habe mal eine Frage, ich glaube ich hab auch schon irgendwo mal gesehen, dass das geht.
Mein Problem:
ich würde gerne eine Sub ausführen lassen, deren Name in einem Skalar steht, also zum Beispiel:
  
$test = "test_sub";  
# Hier kommt der Befehl zum ausführen der Sub  
  
sub test_sub {  
              print "Hallo Welt!";  
              }  
Am Ende sollte dann "Hallo Welt!" auf dem Bildschirm stehen :)
Hoffe ihr habts verstanden und schonmal vielen Dank!
Gruß,
Take
ich würde gerne eine Sub ausführen lassen, deren Name in einem Skalar steht, also zum Beispiel:
$test = "test_sub";
Hier kommt der Befehl zum ausführen der Sub
sub test_sub {
print "Hallo Welt!";
}
>   
> Am Ende sollte dann "Hallo Welt!" auf dem Bildschirm stehen :)  
> Hoffe ihr habts verstanden und schonmal vielen Dank!  
  
Zum Beispiel:  
  
~~~perl
my %functions=(  
   hallo =>  
      sub {  
         print "hallo welt\n";  
      },  
   adee =>  
      sub {  
         print "adee du schnöde welt\n";  
      },  
);  
  
exists $functions{ $eviluserinput }  
   and $functions{ $eviluserinput }->();
mfg Beat
my %functions=(
hallo =>
sub {
print "hallo welt\n";
},
adee =>
sub {
print "adee du schnöde welt\n";
},
);exists $functions{ $eviluserinput }
and $functions{ $eviluserinput }->();
  
  
Hatte ich mir zwar anders vorgestellt, ist aber super die Lösung! :)  
Vielen Dank,  
Take
  Am Ende sollte dann "Hallo Welt!" auf dem Bildschirm stehen :)
Hoffe ihr habts verstanden und schonmal vielen Dank!
Das geht so:
#!/usr/bin/perl -w  
use strict;  
  
my $test = "test_sub";  
  
no strict 'refs';  
$test->();  
  
sub test_sub {  
    print "Hallo Welt!";  
}
Aber prinzipiell ist der Weg von Beat vorzuziehen, da du damit den Ablauf besser kontrollieren kannst
Struppi.
no strict 'refs';
$test->();
Jo, das hatte ich ursprünglich gemeint, aber auf meiner HP ist Beats Version (die ja im Grunde nix anderes macht) echt sicherer!
Danke dir auch nochmal,
Take