#!/usr/bin/perl
# Die obere Zeile nötigenfalls anpassen
########################################################################
use CGI::Carp qw(fatalsToBrowser);
# Angabe was als "Kommando" genutzt werden soll um Subroutinen aufzurufen
$aktion = $ENV{"QUERY_STRING"};
# Definition welche Subroutine starten bei welchem Query String
if ($aktion eq "") {
&hauptseite;
}
if ($aktion eq "seite1") {
&seite1;
}
if ($aktion eq "seite2") {
&seite2;
}
########################################################################
# Hauptseite
########################################################################
sub hauptseite {
print "Content-type: text/html\n\n";
&header;
&links;
print qq~
<font face="Verdana, Arial" size="2">Subroutine Hauptseite
<br><br>
... weitere Programmanweisungen
</font>
~;
&footer;
}
########################################################################
# Seite 1
########################################################################
sub seite1 {
print "Content-type: text/html\n\n";
&header;
&links;
print qq~
<font face="Verdana, Arial" size="2">Subroutine Seite 1
<br><br>
... weitere Programmanweisungen
</font>
~;
&footer;
}
########################################################################
# Seite 2
########################################################################
sub seite2 {
print "Content-type: text/html\n\n";
&header;
&links;
print qq~
<font face="Verdana, Arial" size="2">Subroutine Seite 2
<br><br>
... weitere Programmanweisungen
</font>
~;
&footer;
}
########################################################################
# Linkleiste
########################################################################
# Diese Subroutine wird in alle anderen eingebunden
sub links {
print qq~
<div align="center"><font face="Verdana, Arial" size="2">
<a href=subroutine.pl>Hauptseite</a> |
<a href=subroutine.pl?seite1>Seite 1</a> |
<a href=subroutine.pl?seite2>Seite 2</a>
</font></div><br>
~;
}
########################################################################
# Header und Footer Subroutine
########################################################################
# Header für alle Subroutinen
sub header {
print qq~
<html>
<head>
<title>Subroutinen Navigation Beispiel</title>
</head>
<body bgcolor="#F6F6F6" alink="#FF0000" vlink="#800000" text="#000000" link="#000080">
~;
}
########################################################################
# Footer für alle Subroutinen
sub footer {
print qq~
</body>
</html>
~;
}
########################################################################
Hier in dem Beispiel will ich mal davon ausgehen das dies Script oberhalb z.B. 5 mal mit verschiedenen Subroutineninhalten existiert.
In jeder Datei sind hier die Unterroutinen sub links, sub header und sub footer untergebracht. Diese drei sollen nun in eine externe Datei
ausgelagert werden und damit allen unseren angenommenen 5 Hauptscripten zugänglich gemacht werden.
1. Schritt
Eine neue Datei anlegen und die letzten 3 Subroutinen dort hineinkopieren. Diese Datei als z.B. extern.pl abspeichern.
Der Inhalt der Datei:
########################################################################
# Linkleiste
########################################################################
# Diese Subroutine wird in alle anderen eingebunden
sub links {
print qq~
<div align="center"><font face="Verdana, Arial" size="2">
<a href=subroutine.pl>Hauptseite</a> |
<a href=subroutine.pl?seite1>Seite 1</a> |
<a href=subroutine.pl?seite2>Seite 2</a>
</font></div><br>
~;
}
########################################################################
# Header und Footer Subroutine
########################################################################
# Header für alle Subroutinen
sub header {
print qq~
<html>
<head>
<title>Subroutinen Navigation Beispiel</title>
</head>
<body bgcolor="#F6F6F6" alink="#FF0000" vlink="#800000" text="#000000" link="#000080">
~;
}
########################################################################
# Footer für alle Subroutinen
sub footer {
print qq~
</body>
</html>
~;
}
########################################################################
1;
WICHTIG!
Die 1; muss bei solchen Dateien am Ende stehen, und diese Datei enthält nicht
die erste Zeile #!/usr/bin/perl
2. Schritt.
In die Hauptdatei muss nun unterhalb
#!/usr/bin/perl
# Die obere Zeile nötigenfalls anpassen
########################################################################
Dieser Code eingefügt werden. require "extern.pl";
Require heist soviel wie "benötige" Datei. Dadurch weiss das Hauptscript das es diese Datei
sozusagen aufrufen muss und den Code benutzt.
Hier nun beide Dateien komplett fertiggestellt
1. Hauptdatei:
#!/usr/bin/perl
# Die obere Zeile nötigenfalls anpassen
########################################################################
require "extern.pl";
use CGI::Carp qw(fatalsToBrowser);
# Angabe was als "Kommando" genutzt werden soll um Subroutinen aufzurufen
$aktion = $ENV{"QUERY_STRING"};
# Definition welche Subroutine starten bei welchem Query String
if ($aktion eq "") {
&hauptseite;
}
if ($aktion eq "seite1") {
&seite1;
}
if ($aktion eq "seite2") {
&seite2;
}
########################################################################
# Hauptseite
########################################################################
sub hauptseite {
print "Content-type: text/html\n\n";
&header;
&links;
print qq~
<font face="Verdana, Arial" size="2">Subroutine Hauptseite
<br><br>
... weitere Programmanweisungen
</font>
~;
&footer;
}
########################################################################
# Seite 1
########################################################################
sub seite1 {
print "Content-type: text/html\n\n";
&header;
&links;
print qq~
<font face="Verdana, Arial" size="2">Subroutine Seite 1
<br><br>
... weitere Programmanweisungen
</font>
~;
&footer;
}
########################################################################
# Seite 2
########################################################################
sub seite2 {
print "Content-type: text/html\n\n";
&header;
&links;
print qq~
<font face="Verdana, Arial" size="2">Subroutine Seite 2
<br><br>
... weitere Programmanweisungen
</font>
~;
&footer;
}
2. Die extern.pl die in das Hauptscript eingebunden wird
########################################################################
# Linkleiste
########################################################################
# Diese Subroutine wird in alle anderen eingebunden
sub links {
print qq~
<div align="center"><font face="Verdana, Arial" size="2">
<a href=subroutine.pl>Hauptseite</a> |
<a href=subroutine.pl?seite1>Seite 1</a> |
<a href=subroutine.pl?seite2>Seite 2</a>
</font></div><br>
~;
}
########################################################################
# Header und Footer Subroutine
########################################################################
# Header für alle Subroutinen
sub header {
print qq~
<html>
<head>
<title>Subroutinen Navigation Beispiel</title>
</head>
<body bgcolor="#F6F6F6" alink="#FF0000" vlink="#800000" text="#000000" link="#000080">
~;
}
########################################################################
# Footer für alle Subroutinen
sub footer {
print qq~
</body>
</html>
~;
}
########################################################################
1;
Ich denke das dies Beispiel die Vorteile deutlich aufzeigt. Denn diese externe Datei kann ja nicht nur für dieses Script benutzt werden sondern
durchaus auch für andere Scripte benutzt werden.
» Weiter zu Subroutinen und Parameterübergabe
|