Thread Perl Rechner
(12 answers)
Opened by MauriZze at 2008-06-16 21:07 MauriZze+2008-06-16 19:07:35-- Es ist zwar einem Menschen klar, was Du hier tun willst, dem Perlinterpreter kann das aber mangels Typ- und Kontextinformationen nicht klar sein. Für den Perlinterpreter stehen hier einfach drei Skalare Werte hintereinander, ohne irgendeine Angabe, was damit geschehen soll. Du musst entweder sagen, dass Du dynamisch Code zusammengebaut hast und ihn ausführen willst: Code (perl): (dl
)
print eval("$zahl1 $function[$f] $zahl2;"); Oder Du musst die Operatoren anders speichern: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 @function = ( sub { $_[0] + $_[1]; }, sub { $_[0] - $_[1]; }, sub { $_[0] * $_[1]; }, sub { $_[0] / $_[1]; } ); [...] print $function[$f]->($zahl1, $zahl2); Auch wenn die erste Variante vielleicht einfacher aussieht, so würde ich stark davon abraten, sie zu verwenden, weil die zweite Variante vermutlich schneller und vor allem sehr viel sicherer und weniger fehleranfällig gegen versehentlich falsch zusammengebaute Ausdrücke ist. Apropos Fehlerresistenz: Du solltest Dir angewöhnen, jedes Skript mit zu versehen, weil Dir das die Fehlersuche entscheidend erleichtert. When C++ is your hammer, every problem looks like your thumb.
|