Thread Symbolische Referenz trotz strict (4 answers)
Opened by Coder at 2009-08-27 13:02

pq
 2009-08-27 13:08
#124990 #124990
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
ja.
aber es ist nichts verwerfliches daran, es mit no strict zu machen, vorausgesetzt, du schaltest es nur in einem kleinen bereich ab, also
Code (perl): (dl )
1
2
3
4
5
6
7
8
use strict;
...
{
    # hier mach ich was "boeses"
    no strict 'refs';
    &{ $subname };
}
# hier ist wieder alles ganz strict

alternativ:
Code (perl): (dl )
main->can($subname)->(); # bzw. statt main auch ein anderes package

je nachdem, wo der subname herkommt, solltest du natürlich noch ein bisschen validieren.

generell kann man hier immer eine dispatch-table empfehlen, da kannst du wenig falsch machen:
Code (perl): (dl )
1
2
3
4
5
6
my %table = (
    foo => \&foo,
    bar => \&bar,
    ...
);
$table{ $subname }->(); # call
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem

View full thread Symbolische Referenz trotz strict