Ausführen von Perl-Code mittels eval

[ vorherige Seite ] [ Titelseite ] [ Inhalt ] [ Index ] [ nächste Seite ]

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

[ vorherige Seite ] [ Titelseite ] [ Inhalt ] [ Index ] [ nächste Seite ]

Autor: Eike Grote Version: 2.06 (15.9.2013)