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