Thread Funktionsaufruf per String eval (17 answers)
Opened by Escape at 2008-08-02 21:12

pq
 2008-08-04 20:56
#113080 #113080
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
Escape+2008-08-04 18:32:36--
Das hier:
$var = foo;
löst einen Fehler aus.

Das hier:
$var = eval "$sub_name";
löst keinen Fehler aus.

Bin ratlos.

vergleiche:
Code: (dl )
1
2
3
4
5
6
7
8
$ perl -wle'
my $var = foo;
sub foo { 23 }'
Unquoted string "foo" may clash with future reserved word at -e line 2.
$ perl -wle'
sub foo { 23 }
my $var = foo'
$

der unterschied liegt darin, dass die sub foo erst deklariert sein muss, damit man foo
ohne klammern aufrufen kann. und im zum zeitpunkt des eval ist die sub schon vorhanden.


edit: vertipper im 2. beispiel, muss foo statt $foo heissen, ergebnis ist aber dasselbe =)
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 Funktionsaufruf per String eval