Ausführen von Perl-Code mittels eval

# Ausführen von Perl-Code mittels `eval`

Normalerweise wird der auszuführende Code in eine Datei geschrieben, deren Inhalt dann durch Perl abgearbeitet wird. Will man aber einem Benutzer beispielsweise die Möglichkeit geben eigene Perl-Befehle einzugeben und ausführen zu lassen, so ergibt sich das Problem, daß diese Kommandos zum Zeitpunkt des Programmstarts noch nicht bekannt sind.

Die Funktion `eval()` erwartet als Argument Perl-Code, der entweder in Form einer Zeichenkette oder als Code-Block übergeben wird. Dieser Code wird dann zur Programmlaufzeit übersetzt und ausgeführt.

`#!/usr/local/bin/perl -w use strict; my $v = 5; print "\$v = $v\n"; eval '$v++'; print "\$v = $v\n"; eval { $v++ }; print "\$v = $v\n";`

`$v = 5 $v = 6 $v = 7`

Die erste Variante, bei der ein String übergeben wird, erlaubt eine Fehlerbehandlung zur Laufzeit, ohne daß notwendigerweise das Programm beendet wird. Im Fehlerfalle wird dazu die spezielle Variable `$@` gesetzt.

`#!/usr/local/bin/perl -w use strict; my $v = 5; print "\$v = $v\n"; eval '$v+'; if($@) { print "Fehler: $@" } print "\$v = $v\n";`

`$v = 5 Fehler: syntax error at (eval 1) line 2, at EOF $v = 5`

Autor: Eike Grote | Version: 2.05 (24.1.2012)