1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<title>SELFHTML: Perl / Perl-Sprachelemente / Sprungbefehle</title>
<link rel="stylesheet" type="text/css" href="../../src/selfhtml.css">
<meta name="description" content="Welche Sprungbefehle es in Perl gibt, und welche Auswirkungen sie auf den Programmablauf haben">
<meta name="keywords" content="SELFHTML, Perl, Sprungbefehle, goto, next, continue, last, redo, Schleifen">
<meta name="author" content="Redaktion SELFHTML, selfhtml81@selfhtml.org">
<meta name="robots" content="noindex, nofollow">
<meta name="DC.Publisher" content="SELFHTML e. V.">
<meta name="DC.Date" content="2005-11-09T00:29:27+01:00">
<meta name="DC.Identifier" content="http://de.selfhtml.org/perl/sprache/sprungbefehle.htm">
<meta name="DC.Language" content="de">
<meta name="DC.Rights" content="../../editorial/copyright.htm">
<meta name="DC.Date.created" content="2001-10-27T08:00+01:00">
<meta name="SELF.Pagetype" content="page">
<link rel="alternate" type="application/atom+xml" title="SELFHTML-Weblog (Atom, gesamt)" href="http://aktuell.de.selfhtml.org/weblog/atom-feed">
<link rel="alternate" type="application/rss+xml" title="SELFHTML-Weblog (RSS, Auszge)" href="http://aktuell.de.selfhtml.org/weblog/rss-feed">
<link rel="shortcut icon" type="image/x-icon" href="../../src/favicon.ico">
<link rel="author" title="Impressum" href="../../editorial/impressum.htm">
<link rel="contents" title="Inhaltsverzeichnis" href="../../navigation/inhalt.htm">
<link rel="index" title="Stichwortverzeichnis" href="../../navigation/stichwort.htm">
<link rel="search" title="Suche" href="../../navigation/suche/index.htm">
<link rel="help" title="Hilfe" href="../../editorial/index.htm">
<link rel="copyright" title="Urheberrecht" href="../../editorial/copyright.htm">
<link rel="top" title="SELFHTML" href="../../index.htm">
<link rel="up" title="Perl-Sprachelemente" href="index.htm">
<link rel="next" title="Operatoren" href="operatoren.htm">
<link rel="prev" title="Schleifen" href="schleifen.htm">
<link rel="first" title="CGI-notwendige Anweisungen in Perl" href="cginotwendig.htm">
<link rel="last" title="CGI-typische Aufgaben in Perl" href="cgitypisch.htm">
</head>
<body>
<table cellpadding="4" cellspacing="0" border="0" width="100%">
<tr>
<td colspan="2" class="nav"><a class="an" name="top"><img src="../../src/refkap.gif" width="16" height="13" alt="Teil von"></a> <a href="../../index.htm">SELFHTML</a>/<a href="../../navigation/index.htm" target="_parent" class="navh">Navigationshilfen</a> <img src="../../src/refkap.gif" width="16" height="13" alt="Teil von"> <a href="../index.htm">Perl</a> <img src="../../src/refkap.gif" width="16" height="13" alt="Teil von"> <a href="index.htm">Perl-Sprachelemente</a></td>
</tr>
<tr>
<td class="doc" width="110"><a href="../../index.htm"><img src="../../src/logo.gif" width="106" height="109" border="0" alt="SELFHTML"></a></td>
<td class="docbot" width="100%"><h1 class="ph1">Sprungbefehle</h1></td>
</tr>
<tr>
<td class="doctop">
<img src="../../src/dokx.gif" width="30" height="20" vspace="6" alt="Informationsseite">
</td>
<td valign="top" nowrap="nowrap">
<p>
<img src="../../src/down.gif" width="14" height="10" alt="nach unten"> <a href="#goto">goto</a><br>
<img src="../../src/down.gif" width="14" height="10" alt="nach unten"> <a href="#next">next</a><br>
<img src="../../src/down.gif" width="14" height="10" alt="nach unten"> <a href="#continue">continue</a><br>
<img src="../../src/down.gif" width="14" height="10" alt="nach unten"> <a href="#last">last</a><br>
<img src="../../src/down.gif" width="14" height="10" alt="nach unten"> <a href="#redo">redo</a><br>
</p>
</td>
</tr><tr><td colspan="2" class="doc"> <a href="#bottom"><img src="../../src/down.gif" width="14" height="10" border="0" alt="nach unten"></a> </td></tr>
</table>
<h2><a class="an" name="goto">goto</a></h2>
<p>Der Sprungbefehl <code>goto</code>, der es erlaubt, jederzeit an eine beliebige andere, bestimmbare Stelle im Script-Ablauf zu springen, ist lngst gebrandmarkt als Inbegriff schlechter Programmierung und Spaghetti-Code-Verursacher. Er ist im Normalfall auch durch ordentlich programmierte <img src="../../src/dok.gif" width="15" height="10" alt="Seite"> <a href="schleifen.htm">Schleifen</a> oder gut strukturierte <img src="../../src/dok.gif" width="15" height="10" alt="Seite"> <a href="bedingt.htm">bedingte Anweisungen</a> vermeidbar.</p>
<h3 class="xmp"><a class="an" name="beispiel1">Beispiel eines vollstndigen CGI-Scripts in Perl:</a></h3>
<p><img src="../../src/dokf.gif" width="15" height="10" alt="Beispiel-Seite"> <a href="http://de.selfhtml.org/cgi-bin/812/sprungbefehle1.pl">Anzeigebeispiel: So sieht's aus</a> (Zum Aufruf des Scripts ist eine Internet-Verbindung erforderlich)</p>
<pre>
#!/usr/bin/perl -w
use strict;
use CGI::Carp qw(fatalsToBrowser);
print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
print "<html><head><title>Testausgabe</title>\n";
print "</head><body>\n";
print "<h1>Hallo User</h1>\n";
goto MITTEILUNG;
AUFMUNTERUNG:
print "<p>Das Wetter ist ja so sch&ouml;n, dass man etwas unternehmen kann</p>";
goto ENDE;
MITTEILUNG:
print "<p>Dieser Service ist zur Zeit nicht verf&uuml;gbar</p>\n";
goto AUFMUNTERUNG;
ENDE:
print "</body></html>\n";
</pre>
<h3 class="xpl">Erluterung:</h3>
<p>Das Script gibt HTML-Code zurck. Um herauszufinden, welche <code>print</code>-Anweisungen in welcher Reihenfolge ausgegeben werden, mssen Sie den <code>goto</code>-Anweisungen folgen. Bei jeder <code>goto</code>-Anweisung wird eine Sprungmarke, ein so genanntes <strong>Label</strong> angegeben. Das sind im Beispiel die grogeschriebenen Namen. Unter diesem Namen muss das Label irgendwo im Script existieren, und zwar mit abschlieendem Doppelpunkt. Anschlieend geht es dann mit der Ausfhrung des Scripts weiter, wenn das Label angesprungen wird.</p>
<p class="doc"><a href="#top"><img src="../../src/up.gif" width="14" height="10" border="0" alt="nach oben"></a><a href="#bottom"><img src="../../src/down.gif" width="14" height="10" border="0" alt="nach unten"></a></p>
<h2><a class="an" name="next">next</a></h2>
<p>Der Sprungbefehl <code>next</code> ist zur Verwendung innerhalb von Schleifen gedacht. Der aktuelle Schleifendurchgang wird abgebrochen. Der nchste Schleifendurchgang wird gestartet, und die Schleifenbedingung wird dabei neu ausgewertet.</p>
<h3 class="xmp"><a class="an" name="beispiel2">Beispiel eines vollstndigen CGI-Scripts in Perl:</a></h3>
<p><img src="../../src/dokf.gif" width="15" height="10" alt="Beispiel-Seite"> <a href="http://de.selfhtml.org/cgi-bin/812/sprungbefehle2.pl">Anzeigebeispiel: So sieht's aus</a> (Zum Aufruf des Scripts ist eine Internet-Verbindung erforderlich)</p>
<pre>
#!/usr/bin/perl -w
use strict;
use CGI::Carp qw(fatalsToBrowser);
print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
print "<html><head><title>Testausgabe</title>\n";
print "</head><body>\n";
my $Schluessel;
my $Wert;
while (($Schluessel, $Wert) = each(%ENV)) {
next unless $Schluessel =~ /^HTTP_.*/;
print "<b>$Schluessel</b> hat den Wert <b>$Wert</b><br>\n";
}
print "</body></html>\n";
</pre>
<h3 class="xpl">Erluterung:</h3>
<p>Das Beispiel-Script gibt <img src="../../src/dok.gif" width="15" height="10" alt="Seite"> <a href="../../servercgi/cgi/umgebungsvariablen.htm">CGI-Umgebungsvariablen</a> aus, jedoch nur solche, die mit <code>HTTP_</code> beginnen. Dazu liest das Script den <img src="../../src/dok.gif" width="15" height="10" alt="Seite"> <a href="vordefiniert.htm">vordefinierten</a> Hash <code>%ENV</code> in einer <img src="../../src/dok.gif" width="15" height="10" alt="Seite"> <a href="schleifen.htm#schleifen_hashes">Schleife fr Hashes</a> ein. Mit <code>next</code> und <img src="../../src/dok.gif" width="15" height="10" alt="Seite"> <a href="bedingt.htm#nachgestellte">nachgestellter bedingter Anweisung</a> sowie einem entsprechenden <img src="../../src/dok.gif" width="15" height="10" alt="Seite"> <a href="regexpr.htm">regulren Ausdruck</a> <code>/^HTTP_.*/</code> als Bedingung, die mit <code>unless</code> verneint wird, erreicht die Anweisung, dass der nachfolgende <code>print</code>-Befehl nicht ausgefhrt wird, wenn die aktuelle Umgebungsvariable nicht mit <code>HTTP_</code> beginnt. Auf diese Weise werden also nur solche Variablen ausgegeben, bei denen das der Fall ist.</p>
<p class="doc"><a href="#top"><img src="../../src/up.gif" width="14" height="10" border="0" alt="nach oben"></a><a href="#bottom"><img src="../../src/down.gif" width="14" height="10" border="0" alt="nach unten"></a></p>
<h2><a class="an" name="continue">continue</a></h2>
<p><code>continue</code> gehrt genaugenommen nicht zu den Sprungbefehlen, ist aber eng mit diesen verknpft, da <code>continue</code> angesprungen wird. Das Schlsselwort leitet einen eigenen Anweisungsblock ein. Innerhalb dieses Anweisungsblocks, der wie blich mit <strong>geschweiften</strong> Klammern <code>{</code> und <code>}</code> markiert wird, knnen Sie beliebige Anweisungen notieren. Wenn ein solcher <code>continue</code>-Block unmittelbar <strong>hinter</strong> einem Schleifenblock steht, wird er mit jedem Schleifendurchlauf ebenfalls durchlaufen und dann (auer beim allerersten Durchlauf) direkt vor der Prfung der Schleifenbedingung ausgefhrt.</p>
<h3 class="xmp"><a class="an" name="beispiel3">Beispiel eines vollstndigen CGI-Scripts in Perl:</a></h3>
<p><img src="../../src/dokf.gif" width="15" height="10" alt="Beispiel-Seite"> <a href="http://de.selfhtml.org/cgi-bin/812/sprungbefehle3.pl">Anzeigebeispiel: So sieht's aus</a> (Zum Aufruf des Scripts ist eine Internet-Verbindung erforderlich)</p>
<pre>
#!/usr/bin/perl -w
use strict;
use CGI::Carp qw(fatalsToBrowser);
print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
print "<html><head><title>Testausgabe</title>\n";
print "</head><body>\n";
my $i = 1;
while($i <= 100) {
next if ($i % 7 != 0);
print "$i ist durch 7 teilbar<br>\n";
}
continue {
$i++;
}
print "</body></html>\n";
</pre>
<h3 class="xpl">Erluterung:</h3>
<p>Das Beispiel gibt alle Zahlen zwischen 1 und 100 aus, die durch 7 teilbar sind. Dabei wird eine <code>while</code>-Schleife verwendet, deren Bedingung abfragt, ob <code>$i</code> kleiner gleich <code>100</code> ist. Da <code>$i</code> mit <code>1</code> initialisiert wird, wird der Schleifenblock also erreicht. Innerhalb des Schleifenblocks wird <code>$i</code> jedoch nicht hochgezhlt, was zu einer hoffnungslosen Endlosschleife fhren wrde. Doch dazu dient im Beispiel der <code>continue</code>-Block, der nach der abschlieenden geschweiften Klammer des Schleifenblocks folgt. Innerhalb des <code>continue</code>-Blocks wird <code>$i</code> hochgezhlt.</p>
<p>Innerhalb der Schleife wird mit der Bedingung <code>$i % 7 != 0</code> abgefragt, ob der aktuelle Wert von <code>$i</code> durch 7 geteilt den Rest 0 ergibt (siehe Modulo-Division bei den <img src="../../src/dok.gif" width="15" height="10" alt="Seite"> <a href="operatoren.htm#berechnung">Berechnungsoperatoren</a>). Durch <code>next</code> wird zwar sofort der nchste Schleifendurchgang gestartet, wenn die Zahl nicht ohne Rest durch 7 teilbar ist, doch die Anweisung aus dem <code>continue</code>-Block wird in jedem Fall noch ausgefhrt.</p>
<p class="doc"><a href="#top"><img src="../../src/up.gif" width="14" height="10" border="0" alt="nach oben"></a><a href="#bottom"><img src="../../src/down.gif" width="14" height="10" border="0" alt="nach unten"></a></p>
<h2><a class="an" name="last">last</a></h2>
<p>Der Sprungbefehl <code>last</code> bricht eine Schleife sofort ab.</p>
<h3 class="xmp"><a class="an" name="beispiel4">Beispiel eines vollstndigen CGI-Scripts in Perl:</a></h3>
<p><img src="../../src/dokf.gif" width="15" height="10" alt="Beispiel-Seite"> <a href="http://de.selfhtml.org/cgi-bin/812/sprungbefehle4.pl">Anzeigebeispiel: So sieht's aus</a> (Zum Aufruf des Scripts ist eine Internet-Verbindung erforderlich)</p>
<pre>
#!/usr/bin/perl -w
use strict;
use CGI::Carp qw(fatalsToBrowser);
print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
print "<html><head><title>Testausgabe</title>\n";
print "</head><body>\n";
my $jetzt;
while(1) {
$jetzt = time;
last if ($jetzt % 2 == 0);
}
print "$jetzt \n";
print "</body></html>\n";
</pre>
<h3 class="xpl">Erluterung:</h3>
<p>Das Beispiel-Script ermittelt mit der Funktion <img src="../../src/dok.gif" width="15" height="10" alt="Seite"> <a href="../funktionen/datumzeit.htm#time">time</a> innerhalb einer klassischen Endlosschleife, formuliert mit <code>while(1)</code> ("Bedingung ist immer wahr") den aktuellen Zeitwert in Sekunden und speichert ihn in dem Skalar <code>$jetzt</code>. Mit der Bedingung <code>$i % 2 == 0</code> wird abgefragt, ob der aktuelle Wert von <code>$jetzt</code> durch 2 geteilt den Rest 0 ergibt (siehe Modulo-Division bei den <img src="../../src/dok.gif" width="15" height="10" alt="Seite"> <a href="operatoren.htm#berechnung">Berechnungsoperatoren</a>). Ist diese Bedingung der nachgestellten <code>if</code>-Anweisung erfllt, wird der voranstehende <code>last</code>-Befehl ausgefhrt. Die Schleife wird dann abgebrochen. Falls das Script also zu einem Zeitpunkt mit ungeradem Sekundenwert aufgerufen wird, wird so oft der aktuelle Sekundenwert ausgegeben, bis <code>time</code> den nchsthheren Sekundenwert zurckliefert.</p>
<p class="doc"><a href="#top"><img src="../../src/up.gif" width="14" height="10" border="0" alt="nach oben"></a><a href="#bottom"><img src="../../src/down.gif" width="14" height="10" border="0" alt="nach unten"></a></p>
<h2><a class="an" name="redo">redo</a></h2>
<p>Der Sprungbefehl <code>redo</code> wiederholt den aktuellen Schleifendurchlauf einfach noch einmal. Dabei wird die Schleifenbedingung nicht noch einmal ausgewertet.</p>
<h3 class="xmp">Beispiel der Textdatei <var>text.txt</var>:</h3>
<pre>
das ist \
eine Datei mit einer Konvention.
Ein Backslash am Ende \
einer Zeile bedeutet: \
keine neue Zeile!
</pre>
<h3 class="xmp"><a class="an" name="beispiel5">Beispiel eines vollstndigen CGI-Scripts in Perl:</a></h3>
<p><img src="../../src/dokf.gif" width="15" height="10" alt="Beispiel-Seite"> <a href="http://de.selfhtml.org/cgi-bin/812/sprungbefehle5.pl">Anzeigebeispiel: So sieht's aus</a> (Zum Aufruf des Scripts ist eine Internet-Verbindung erforderlich)</p>
<pre>
#!/usr/bin/perl -w
use strict;
use CGI::Carp qw(fatalsToBrowser);
open(FH,"<text.txt");
my @Zeilen;
while(<FH>) {
chomp;
if(s/\\$//) {
$_ .= <FH>;
redo unless(eof(FH));
}
push(@Zeilen,$_."\n");
}
close(FH);
print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
print "<html><head><title>Testausgabe</title>\n";
print "</head><body><pre>\n";
print @Zeilen;
print "</pre></body></html>\n";
</pre>
<h3 class="xpl">Erluterung:</h3>
<p>Das Beispiel zeigt eine klassische Verwendung von <code>redo</code>. Dabei geht es darum, mehrere Zeilen aufgrund einer Konvention zu einer zusammenzufassen. Die zuvor gezeigte Textdatei enthlt zwar fnf Zeilen, aber am Ende sollen daraus nur zwei Zeilen gemacht werden. Zeilen, die mit Backslash enden, sollen in der nchsten Zeile weitergehen.</p>
<p>Das Script ffnet die Textdatei mit der Funktion <img src="../../src/dok.gif" width="15" height="10" alt="Seite"> <a href="../funktionen/einausgabe.htm#open">open</a>. In einer <code>while</code>-Schleife liest es die jeweils nchste Zeile der Datei ein. Die Schleifenbedingung ist dabei <code><FH></code>. Dies bedeutet: nchste Portion aus der mit dem Datei-Handle <code>FH</code> verbundenen Datei, und zwar im skalaren Kontext. In diesem Kontext wird dann die nchste Zeile der Datei geliefert.</p>
<p>Innerhalb der Schleife wird mit der Funktion <img src="../../src/dok.gif" width="15" height="10" alt="Seite"> <a href="../funktionen/zeichenketten.htm#chomp">chomp</a> erst einmal das abschlieende Zeilenumbruch-Zeichen der aktuellen Zeile entfernt. Dann wird mit dem <img src="../../src/dok.gif" width="15" height="10" alt="Seite"> <a href="regexpr.htm">regulren Ausdruck</a> <code>s/\\$//</code> ein eventuell vorhandener Backslash am Ende der Zeile gesucht und ersetzt. Falls tatschlich ein Backslash gefunden und ersetzt wurde, ist zugleich die Bedingung fr das <code>if</code> wahr, und es wird der davon abhngige Anweisungsblock ausgefhrt. In diesem Block wird mit <code>$_ .= <FH>;</code> die nchste Zeile eingelesen und an die aktuelle angehngt. Benutzt wird dabei die <img src="../../src/dok.gif" width="15" height="10" alt="Seite"> <a href="vordefiniert.htm">vordefinierte Variable</a> <code>$_</code> und der <img src="../../src/dok.gif" width="15" height="10" alt="Seite"> <a href="operatoren.htm#zeichenkettenverknuepfung">Operator fr Zeichenkettenverknpfung</a> (<code>.</code>). Anschlieend wird mit <code>redo</code> wieder an den Beginn der Schleife gesprungen, sofern nicht (<code>unless</code>) das Dateiende (<img src="../../src/dok.gif" width="15" height="10" alt="Seite"> <a href="../funktionen/einausgabe.htm#eof">eof</a>) erreicht ist.</p>
<p><code>redo</code> bewirkt, dass die Schleifenbedingung nicht neu ausgewertet wird. Es wird also keine nchste Zeile eingelesen. Die Variable <code>$_</code>, auf die sich sowohl die Anweisung <code>chomp;</code> als auch der regulre Ausdruck beziehen, wurde ja schon innerhalb des <code>if</code>-Blocks mit einem neuen Wert versorgt. Zum Verstndnis: mit <code>chomp;</code> ist so viel gemeint wie: <code>chomp($_);</code>, und mit <code>if(s/\\$//)</code> so viel wie: <code>if($_ =~ s/\\$//)</code>. Sowohl das Entfernen des abschlieenden Zeilenumbruchs als auch das Bewerten, ob ein abschlieender Backslash vorkommt, bezieht sich also implizit auf die vordefinierte Variable <code>$_</code>.</p>
<p>Wenn im Beispiel die <code>if</code>-Bedingung nicht mehr wahr ist, gelangt das Script dorthin, wo mit der Funktion <img src="../../src/dok.gif" width="15" height="10" alt="Seite"> <a href="../funktionen/listenhashes.htm#push">push</a> die aktuelle Zeile dem Array <code>@Zeilen</code> hinzugefgt wird. Darin sind am Ende nur die beiden Zeilen der Datei gespeichert, die per Konvention brig bleiben sollen. Das Script gibt den Inhalt von <code>@Zeilen</code> am Ende aus.</p>
<table cellpadding="4" cellspacing="0" border="0" width="100%">
<tr><td colspan="2" class="doc">
<a href="#top"><img src="../../src/up.gif" width="14" height="10" border="0" alt="nach oben"></a>
</td></tr>
<tr><td class="doc"><a href="operatoren.htm"><img src="../../src/next.gif" width="10" height="10" border="0" hspace="10" alt="weiter"></a></td>
<td width="100%"><img src="../../src/dok.gif" width="15" height="10" alt="Seite"> <a href="operatoren.htm">Operatoren</a>
</td></tr>
<tr>
<td class="doc"><a href="schleifen.htm"><img src="../../src/prev.gif" width="10" height="10" border="0" hspace="10" alt="zurck"></a></td>
<td><img src="../../src/dok.gif" width="15" height="10" alt="Seite"> <a href="schleifen.htm">Schleifen</a>
</td>
</tr>
<tr><td colspan="2" class="doc"> </td>
</tr>
<tr>
<td colspan="2" class="nav"><a class="an" name="bottom"><img src="../../src/refkap.gif" width="16" height="13" alt="Teil von"></a> <a href="../../index.htm">SELFHTML</a>/<a href="../../navigation/index.htm" target="_parent" class="navh">Navigationshilfen</a> <img src="../../src/refkap.gif" width="16" height="13" alt="Teil von"> <a href="../index.htm">Perl</a> <img src="../../src/refkap.gif" width="16" height="13" alt="Teil von"> <a href="index.htm">Perl-Sprachelemente</a></td>
</tr>
</table>
<p>© 2007 <img src="../../src/dok.gif" width="15" height="10" alt="Seite"> <a href="../../editorial/impressum.htm">Impressum</a></p>
</body>
</html>
|