W Perl, jesteś w stanie wywołać funkcję przez odniesienie (lub nazwisko) tak:Perl: Problemy wywołanie podprogramów przez odniesienie używając wartości hash
my $functionName = 'someFunction';
&$functionName();
#someFunction defined here:
sub someFunction { print "Hello World!"; }
Co usiłuję zrobić jest użycie wartość z skrótu, tak:
my %hash = (
functionName => 'someFunction',
);
&$hash{functionName}();
#someFunction defined here:
sub someFunction { print "Hello World!"; }
A błąd, który otrzymuję, to globalny symbol "$ hash" wymaga jawnej nazwy pakietu.
Moje pytanie brzmi: czy istnieje sposób, aby to zrobić bez użycia zmiennej pośredniej?
Każda pomoc w tej sprawie byłaby bardzo ceniona!
Możesz także wykonać 'mój% hash = (function => \ & someFunction)' który nie wymaga 'no stric t 'refs''. – TLP
@ TLP +1, miałem zamiar * odpowiedzieć na to. 'use strict;' zapisuje ** więc ** wiele problemów ... – Dallaylaen
Jestem w stanie tego użyć, ale dodaje trochę nieczytelnego kodu (na razie) ... Dynamicznie ustawiam wartość functionName w czasie wykonywania i wywoływanie funkcji według jej nazwy. Perl jest świetny! – Thumper