Programmablauf

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


Start


Der Perl-Code eines Programms ist zwar für einen (menschlichen) Programmierer mehr oder weniger gut lesbar, ein Mikroprozessor kann damit so aber nicht allzu viel anfangen. Daher muß der Code vor der Ausführung in die Sprache des Computers übersetzt bzw. kompiliert werden. Im Falle von Perl wird das komplette Programm unmittelbar vor der Ausführung in eine interne Form übersetzt. Treten dabei keine Fehler auf, arbeitet der Perl-Interpreter normalerweise die einzelnen Befehle Schritt für Schritt ab.

#!/usr/local/bin/perl -w

use strict;

print "1\n";
print "2\n";
print "3\n";
1
2
3

Mit Hilfe der speziellen Subroutine BEGIN kann Programmcode bereits in der Kompilierungsphase ausgeführt werden um Einfluß auf die Übersetzung des Rests des Programms zu nehmen. Mehrere BEGIN-Blöcke werden in der Reihenfolge des Auftretens abgearbeitet.

#!/usr/local/bin/perl -w

use strict;

print "1\n";
print "2\n";
BEGIN { print "BEGIN 1\n" }
print "3\n";
BEGIN { print "BEGIN 2\n" }
BEGIN 1
BEGIN 2
1
2
3

[Seitenanfang]


Einflußnahme auf Programm


Sogenannte Pragmas beeinflussen direkt die Übersetzung eines Perl-Programms. So sorgt etwa das immer empfehlenswerte use strict für eine strengere Kontrolle der verwendeten Variablen. Pragmas werden durch use aktiviert und durch no deaktiviert.

#!/usr/local/bin/perl -w

use strict;
$v = 7;

no strict;
$w = 9;
Global symbol "$v" requires explicit package name at ./test.pl line 4.
BEGIN not safe after errors--compilation aborted at ./test.pl line 6.

Wie man an der Fehlermeldung erkennt, wird nur die Variable $v beanstandet, nicht aber $w.

Neben Pragmas, die den Perl-Interpreter direkt beeinflussen, kann man mit Hilfe von use auch Module einbinden, die zusätzliche Variablen und Funktionen bereitstellen. Wie Module funktionieren und selbst entwickelt werden können ist unter "Module" beschrieben.

Eine weitere Verwendungsmöglichkeit von use ist die Forderung nach einer bestimmten Mindestversion des Perl-Interpreters.

#!/usr/local/bin/perl -w

use strict;
use 5.8.2;

print "Nur ab Perl 5.8.2 lauffähig\n";

Das obige Beispielprogramm läuft nur, wenn der verwendete Perl-Interpreter die Version 5.8.2 oder höher hat; ansonsten erfolgt eine Fehlermeldung.

[Seitenanfang]


Ende


Nach dem Ausführen des letzten Kommandos beendet der Perl-Interpreter normalerweise automatisch die Arbeit. Analog zu BEGIN gibt es die spezielle Subroutine END, deren Inhalt nach den letzten Befehlen des Programmtextes aufgerufen wird. Existieren mehrere END-Blöcke, so werden sie in umgekehrter Reihenfolge abgearbeitet.

#!/usr/local/bin/perl -w

use strict;

print "1\n";
print "2\n";
END { print "END 1\n" }
print "3\n";
END { print "END 2\n" }
1
2
3
END 2
END 1

Möchte man ein Programm an einer bestimmten Stelle gezielt beenden, so kann man hierfür die Funktion exit() verwenden. Gibt man kein Argument an, so wird die Zahl 0 angenommen, was für einen "erfolgreichen" Programmabbruch steht. Will man anzeigen, daß das frühe Programmende durch einen Fehler verursacht wurde, gibt man eine positive Zahl an. Die Verarbeitung dieses Wertes hängt allerdings vom Betriebssystem ab.

#!/usr/local/bin/perl -w

use strict;

print "1\n";
print "2\n";
exit 0;
print "3\n";
1
2

Soll ein Programm bei Auftreten eines Fehlers kontrolliert beendet werden, so verwendet man besser die Funktion die(), bei der man einen Text angeben kann, der als Fehlermeldung ausgegeben wird.

#!/usr/local/bin/perl -w

use strict;

die "Es ist ein Fehler aufgetreten."
Es ist ein Fehler aufgetreten. at ./test.pl line 5.

Schließt man den Fehlertext mit einem Zeilenvorschub ("\n") ab, so unterbleibt die Ausgabe von Programmname und Zeilennummer.

[Seitenanfang]


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

Autor: Eike Grote Version: 2.05 (24.1.2012)