File: module.htm

package info (click to toggle)
selfhtml 8.1.2-1
  • links: PTS
  • area: non-free
  • in suites: bullseye, buster, jessie, jessie-kfreebsd, squeeze, stretch, wheezy
  • size: 28,076 kB
  • ctags: 4,161
  • sloc: xml: 614; java: 375; makefile: 8
file content (318 lines) | stat: -rw-r--r-- 24,381 bytes parent folder | download
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
308
309
310
311
312
313
314
315
316
317
318
<!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 / Funktionsreferenz / Funktionen fr Module und Packages</title>
<link rel="stylesheet" type="text/css" href="../../src/selfhtml.css">
<meta name="description"    content="Welche Funktionen es in Perl gibt, um Module einzubinden.">
<meta name="keywords"       content="SELFHTML, Perl, Funktionen, Perl-Funktionen, Module, Packages, package, require, use, @INC, %INC">
<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/funktionen/module.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-Funktionen" href="index.htm">
<link rel="next" title="Einfhrung in das Arbeiten mit Modulen" href="../module/intro.htm">
<link rel="prev" title="Funktionen fr Informationen aus Konfigurationsdateien" href="konfiguration.htm">
<link rel="first" title="Funktionen fr Zeichenketten" href="zeichenketten.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">&nbsp;<a href="../index.htm">Perl</a> <img src="../../src/refkap.gif" width="16" height="13" alt="Teil von">&nbsp;<a href="index.htm">Perl-Funktionen</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">Funktionen fr Module und Packages</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">&nbsp;<a href="#allgemeines">Allgemeines zu diesen Funktionen</a><br>
<img src="../../src/down.gif" width="14" height="10" alt="nach unten">&nbsp;<a href="#package">package</a> - Namensraum eines Packages aktivieren<br>
<img src="../../src/down.gif" width="14" height="10" alt="nach unten">&nbsp;<a href="#require">require</a> - andere Perl-Datei ausfhren<br>
<img src="../../src/down.gif" width="14" height="10" alt="nach unten">&nbsp;<a href="#use">use</a> - Modul einbinden<br>
</p>
</td>
</tr><tr><td colspan="2" class="doc">&nbsp;<a href="#bottom"><img src="../../src/down.gif" width="14" height="10" border="0" alt="nach unten"></a>&nbsp;</td></tr>
</table>



<h2><a class="an" name="allgemeines">Allgemeines zu diesen Funktionen</a></h2>

<p>Um die hier beschriebenen Funktionen besser zu verstehen, sollten Sie das Kapitel ber <img src="../../src/kap.gif" width="15" height="13" alt="Kapitel">&nbsp;<a href="../module/index.htm">Perl-Module</a> lesen.</p>

<h3><a class="an" name="inc"><code>@INC</code> - die Liste der Pfadnamen fr Module</a></h3>

<p>Wenn Sie mit <img src="../../src/down.gif" width="14" height="10" alt="nach unten">&nbsp;<a href="#require">require</a> oder <img src="../../src/down.gif" width="14" height="10" alt="nach unten">&nbsp;<a href="#use">use</a> eine Moduldatei (Dateien  <code>*.pm</code>) einbinden, sucht Perl die entsprechende Datei entweder im aktuellen Verzeichnis, oder in einem Verzeichnis, das in der Liste fr Modulpfadnamen gespeichert ist. Dazu dient die <img src="../../src/dok.gif" width="15" height="10" alt="Seite">&nbsp;<a href="../sprache/vordefiniert.htm">vordefinierte Variable</a> <code>@INC</code>. Im Abschnitt <img src="../../src/dok.gif" width="15" height="10" alt="Seite">&nbsp;<a href="../module/intro.htm#speicherorte_inc">Speicherorte fr Module und die Liste @INC</a> finden Sie ein Beispielscript, mit dessen Hilfe Sie sich den Inhalt von <code>@INC</code> ausgeben lassen knnen, um die bei Ihnen gltigen Pfade herauszufinden.</p>

<p>Neben der Liste <code>@INC</code> gibt es brigens auch einen Hash namens <code>%INC</code>. In diesem Hash werden alle bereits geladenen Module gespeichert. Perl verhindert auf diese Weise, dass Module mehrfach geladen werden und dadurch zu unerwnschtem Verhalten im Programmablauf fhren. ber derartige Probleme, die in C durch Prprozessoranweisungen wie <code>#ifndef</code> und <code>#define</code> gelst werden mssen, brauchen Sie sich in Perl also keine Gedanken machen.</p>

<h3><a class="an" name="Namensraum">Namensrume</a></h3>

<p>Ein Namensraum heit in Perl <b>Package</b>. Wenn Sie nichts anderes angeben, befindet sich jede Perl-Datei im package mit dem Namen <code>main</code>. Variablen, die innerhalb einer Perl-Datei ohne weitere Einschrnkungen wie <img src="../../src/dok.gif" width="15" height="10" alt="Seite">&nbsp;<a href="kontrolle.htm#local">local</a> oder <img src="../../src/dok.gif" width="15" height="10" alt="Seite">&nbsp;<a href="kontrolle.htm#my">my</a> definiert werden, Namen von Subroutinen usw. gelten global in dieser einen Datei. Mit Hilfe der Funktion <img src="../../src/down.gif" width="14" height="10" alt="nach unten">&nbsp;<a href="#package">package</a> knnen Sie eine Perl-Datei in mehrere Packages unterteilen.</p>

<h3>Was ist besser - <code>require</code> oder <code>use</code>?</h3>

<p>Die beiden Funktionen <img src="../../src/down.gif" width="14" height="10" alt="nach unten">&nbsp;<a href="#require">require</a> und <img src="../../src/down.gif" width="14" height="10" alt="nach unten">&nbsp;<a href="#use">use</a> haben hnliche Aufgaben, unterscheiden sich jedoch in ihrer Wirkungsweise. <code>require</code> wird zur Laufzeit eines Scripts geladen (und zwar an der Stelle, wo die <code>require</code>-Anweisung steht), whrend <code>use</code> bereits vorher, zur Kompilierzeit des Scripts, mit eingebunden wird. Bei <code>require</code> wechseln Sie also einfach whrend der Scriptausfhrung in ein anderes Script, lassen dieses kompilieren und ausfhren, und kehren dann zurck. Bei <code>use</code> dagegen haben Sie nach dem Kompilieren, das Perl vor jedem Ausfhren des Scripts durchfhrt, praktisch ein groes Script, dessen Code sich aus den Sourcen mehrerer Moduldateien zusammensetzt. Das hat Folgen. So werden Syntaxfehler, die in einem mit <code>use</code> eingebundenen Modul enthalten sind, bereits im Vorfeld erkannt, und das Script wird gar nicht erst ausgefhrt. Bei <code>require</code> hingegen kann es passieren, dass das Hauptscript fehlerfrei ist, das eingebundene Script jedoch Syntaxfehler enthlt. Diese werden jedoch erst erkannt, wenn das Hauptscript bereits luft. Dadurch knnen undefinierte Zustnde entstehen. Aus heutiger Sicht ist die Verwendung von <code>use</code> in den meisten Fllen vorzuziehen. Allerdings gibt es auch Ausnahmen.</p>

<p>Letztlich ist die Tatsache, dass es heute beide Funktionen gibt, historisch bedingt. <code>require</code> ist lter (wurde schon von Perl 4 interpretiert), whrend <code>use</code> seit Version 5 zur Verfgung steht. In der 5er-Version wurde das Modulkonzept von Perl stark erweitert und hat erst dort die heute verbreitete Form angenommen.</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="package">package - Namensraum eines Packages aktivieren</a></h2>

<p>Mit dieser Funktion bestimmen Sie einen <img src="../../src/up.gif" width="14" height="10" alt="nach oben">&nbsp;<a href="#Namensraum">Namensraum</a> als den aktiv gltigen. Der Namensraum bleibt solange aktiv, bis mit einem neuen Aufruf von <code>package</code> ein anderer Namensraum aktiv wird, oder bis die natrliche Grenze eines Namensraums, also der aktuelle Block (etwa eine Subroutine) oder das Dateiende erreicht ist. Auf diese Weise knnen Sie innerhalb einer Scriptdatei modular arbeiten.</p>

<p>Erwartet als Parameter:<br>
<b>1.</b> den Namen des Namensraums, oder eine Zahl, die als Versionsnummer interpretiert wird.</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">&nbsp;<a href="http://de.selfhtml.org/cgi-bin/812/module1.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 '&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;', "\n";
print "&lt;html&gt;&lt;head&gt;&lt;title&gt;Testausgabe&lt;/title&gt;\n";
print "&lt;/head&gt;&lt;body&gt;\n";

package deutsch;
use vars qw($Hauptstadt $Flaeche);
$Hauptstadt = "Berlin";
$Flaeche = "356.910 qm";

package franzoesisch;
use vars qw($Hauptstadt $Flaeche);
$Hauptstadt = "Paris";
$Flaeche = "551.500 qm";

package deutsch;
print "&lt;p&gt;Die Hauptstadt ist $Hauptstadt und das Land ist $Flaeche gross&lt;/p&gt;";

package franzoesisch;
print "&lt;p&gt;Die Hauptstadt ist $Hauptstadt und das Land ist $Flaeche gross&lt;/p&gt;";

print "&lt;/body&gt;&lt;/html&gt;\n";
</pre>

<h3 class="xpl">Erluterung:</h3>

<p>Das Beispiel ruft insgesamt vier mal <code>package</code> auf. Beim ersten mal wird dabei ein neuer Namensraum namens <code>deutsch</code> geschaffen, beim zweiten mal ein neuer Namensraum namens <code>franzoesisch</code>. Beim dritten mal wird der Namensraum <code>deutsch</code> erneut aufgerufen, und ab diesem Befehl kennt das Script nur diejenigen Variablen, Subroutinen usw., die innerhalb des gleichen Namensraums definiert wurden. Ebenso ist es beim vierten mal, wo der Namensraum <code>franzoesisch</code> wieder aufgerufen wird.</p>

<p>Bei Verwendung von <code>use strict</code> wie im Beispiel mssen die Variablen, die in den beiden ersten Package-Blcken deklariert werden, allerdings explizit global deklariert werden, um bei spteren Aufrufen des Packages zur Verfgung zu stehen. Um die Deklaration globaler Variablen zu ermglichen, steht das <img src="../../src/dok.gif" width="15" height="10" alt="Seite">&nbsp;<a href="../module/standardmodule.htm">Standardmodul</a> <code>vars</code> zur Verfgung. Im Beispiel sehen Sie, wie dieses Modul eingesetzt wird. Innerhalb eines Packages mit <code>use</code> eingebunden, stehen in der Klammer hinter <code>qw</code> alle Variablennamen des aktuellen Packages, die global, also ohne <code>my</code> davor deklariert werden sollen. Perl meckert dann trotz <code>use strict</code> nicht an den Deklarationen.</p>

<h3 class="inf">Beachten Sie</h3>

<p>Solange nicht mit <code>package</code> ein spezieller Namensraum aktiviert wird, gilt der <b>Default-Namensraum</b> von Perl, der den Namen <code>main</code> hat.</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="require">require - andere Perl-Datei ausfhren</a></h2>

<p>Mit dieser Funktion fhren Sie eine beliebige andere Perl-Datei aus. Das andere Script wird an der Stelle, an der der <code>require</code>-Aufruf steht, ausgefhrt.</p>

<p>Erwartet als Parameter:<br>
<b>1.</b> den Namen der einzubindenden Datei, gegebenenfalls mit Pfadnamen (Normalfall), oder eine Zahl, die als Versionsnummer interpretiert wird.</p>

<h3 class="xmp"><a class="an" name="beispiel2">Beispiel - Teil 1 (vollstndiges CGI-Script in Perl):</a></h3>

<p><img src="../../src/dokf.gif" width="15" height="10" alt="Beispiel-Seite">&nbsp;<a href="http://de.selfhtml.org/cgi-bin/812/module2.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 '&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;', "\n";
print "&lt;html&gt;&lt;head&gt;&lt;title&gt;Testausgabe&lt;/title&gt;\n";
print "&lt;/head&gt;&lt;body&gt;\n";

require "hallo_welt.pl";

print "&lt;/body&gt;&lt;/html&gt;\n";
</pre>

<h3 class="xmp">Beispiel - Teil 2 (Moduldatei <var>hallo_welt.pl</var>):</h3>
<pre>
print "Hallo Welt!";
1;
</pre>

<h3 class="xpl">Erluterung:</h3>

<p>Das Beispiel zeigt, wie Sie ein "herkmmliches" Perl-Script, das seinen Output auf die Standardausgabe schreibt, in ein CGI-Script einbetten knnen, sodass der Output an den aufrufenden Browser gesendet werden kann. Im GGI-Script wird mit <code>require "hallo_welt.pl"</code> eine andere Perl-Datei eingebunden. Diese Datei schreibt einfach ein <code>Hallo Welt</code> auf die Standardausgabe. Da es jedoch in ein Script eingebunden ist, das zuvor den blichen HTTP-Header sendet, gelangt der Output als HTML-Inhalt zum Browser.</p>

<h3 class="inf">Beachten Sie</h3>

<p>Sie knnen mit <code>require</code> ebenso wie mit <img src="../../src/down.gif" width="14" height="10" alt="nach unten">&nbsp;<a href="#use">use</a> eine Moduldatei mit der Endung <code>.pm</code> einbinden. In diesem Fall mssen Sie <code>require&nbsp;Modulname</code> angeben. Perl sucht dann nach einer Datei namens <code>Modulname.pm</code>. Auch die Syntax mit <code>::</code> ist genauso mglich wie bei <code>use</code> (vergleiche dazu den Abschnitt <img src="../../src/dok.gif" width="15" height="10" alt="Seite">&nbsp;<a href="../module/intro.htm#adressierungssyntax">Adressierungs-Syntax beim Einbinden von Modulen</a>).</p>

<p>Eingebundene Perl-Dateien mssen am Ende so etwas wie <code>1;</code> enthalten. Dadurch wird sichergestellt, dass das Modul oder die Modul-Funktion korrekt ausgefhrt wird.</p>

<p>Wenn eine eingebundene Datei Subroutinen enthlt, knnen Sie diese so aufrufen, als wren sie im aktuellen Perl-Script notiert.</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="use">use - Modul einbinden</a></h2>

<p>Mit dieser Funktion laden Sie ein Perl-Modul oder bestimmte Funktionen aus einem solchen Modul in ihr Script und knnen den entsprechenden Perl-Code in Ihrem Script benutzen.</p>

<p>Erwartet als Parameter:<br>
<b>1.</b> den Namen des Moduls (Normalfall), oder eine Zahl, die als Versionsnummer interpretiert wird.<br>
<b>2.</b> bis <b>n.</b> (optional) weitere, einschrnkende Angaben (siehe weiter unten).</p>

<h3 class="xmp"><a class="an" name="beispiel3">Beispiel - Teil 1 (vollstndiges CGI-Script in Perl):</a></h3>

<p><img src="../../src/dokf.gif" width="15" height="10" alt="Beispiel-Seite">&nbsp;<a href="http://de.selfhtml.org/cgi-bin/812/module3.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 '&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;', "\n";
print "&lt;html&gt;&lt;head&gt;&lt;title&gt;Testausgabe&lt;/title&gt;\n";
print "&lt;/head&gt;&lt;body&gt;\n";

use Syntax;
my $Output = html_syntax("&lt;h1&gt;So sieht es aus&lt;/h1&gt;","red");
print "&lt;h1&gt;So sieht es aus&lt;/h1&gt;\n";
print "$Output\n";

print "&lt;/body&gt;&lt;/html&gt;\n";
</pre>

<h3 class="xmp">Beispiel - Teil 2 (Moduldatei <var>Syntax.pm</var>):</h3>
<pre>
package Syntax;
use strict;
use vars qw($VERSION @ISA @EXPORT);
require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(html_syntax);
$VERSION = 1.0;

sub html_syntax {
  my $htmlstr = shift;
  my $color = shift;
  $htmlstr =~ s/\&amp;/&amp;amp;/g;
  $htmlstr =~ s/\"/&amp;quot;/g;
  $htmlstr =~ s/\&lt;/&amp;lt;/g;
  $htmlstr =~ s/\&gt;/&amp;gt;/g;
  $htmlstr =~ s/(&amp;lt;)/&lt;span style=\"color:$color\"&gt;$1/g;
  $htmlstr =~ s/(&amp;gt;)/$1&lt;\/span&gt;/g;
  return($htmlstr);
}
1;
</pre>

<h3 class="xpl">Erluterung:</h3>

<p>Das Komplettbeispiel zeigt ein CGI-Script, in dem ein selbst definiertes Modul verwendet wird, sowie den Code der entsprechenden Moduldatei. Im CGI-Script wird die Moduldatei, die im Beispiel <code>Syntax.pm</code> heit und im gleichen Verzeichnis wie das CGI-Script oder im Hauptverzeichnis von <code>@INC</code> abgelegt wird, mit <code>use Syntax;</code> eingebunden (vergleichen Sie dazu den Abschnitt <img src="../../src/dok.gif" width="15" height="10" alt="Seite">&nbsp;<a href="../module/intro.htm#adressierungssyntax">Adressierungs-Syntax beim Einbinden von Modulen</a>).</p>

<p>Das Hauptprogramm ruft dann eine Subroutine namens <code>html_syntax()</code> auf und bergibt ihr zwei Parameter, nmlich eine Zeichenkette mit HTML-Code und den Namen einer Farbe (<code>red</code>). Die Subroutine <code>html_syntax()</code> hat die Aufgabe, den bergebenen HTML-Code HTML-gerecht zu maskieren und die HTML-Tags in der angegebenen Farbe auszuzeichnen (also praktisch aus dem bergebenen HTML-Code den Code mit HTML-Syntax-Highlighting darstellbar zu machen). Die Subroutine erzeugt dabei neuen HTML-Code und gibt diesen am Ende zurck. Im Hauptprogramm wird der zurckgegebene Code in der Variablen <code>$Output</code> aufgefangen. Deren Inhalt kann schlielich an den Webserver zur Weitergabe an einen aufrufenden Browser ausgeliefert werden.</p>

<p>Die Subroutine <code>html_syntax()</code> ist im Modul <code>Syntax</code> mit <code>sub&nbsp;html_syntax</code> definiert. Die Moduldatei enthlt zu Beginn noch einige weitere Anweisungen, auf die an dieser Stelle nicht nher eingegangen wird. Lesen Sie dazu den Abschnitt <img src="../../src/dok.gif" width="15" height="10" alt="Seite">&nbsp;<a href="../module/intro.htm#use_erweitert">Erweiterte Verwendung von use (@EXPORT, @EXPORT_OK und qw)</a>.</p>

<p><a name="use_Parameter">Die folgende Tabelle zeigt, welche Varianten es gibt, um mit <code>use</code> ein Modul oder bestimmte Teile davon einzubinden:</a></p>

<table class="reftable" cellpadding="3" cellspacing="0" border="1">
<tr>
<th>Beispiel:</th>
<th>Erluterung:</th>
</tr>
<tr>
<td class="code" nowrap="nowrap"><code>use Beispiel;</code></td>
<td class="tabxpl">Bindet ein Modul namens <code>Beispiel.pm</code> ein, wobei diese Datei entweder im aktuellen Arbeitsverzeichnis oder in einem der Verzeichnisse abgelegt werden muss, die in <img src="../../src/up.gif" width="14" height="10" alt="nach oben">&nbsp;<a href="#inc">@INC</a> gespeichert sind. Geben Sie also den Dateinamen ohne die Endung an. Die Endung der Moduldatei muss <code>.pm</code> lauten.</td>
</tr>
<tr>
<td class="code" nowrap="nowrap"><code>use Beispiel::Spezial;</code></td>
<td class="tabxpl">Bindet ein Modul namens <code>Spezial.pm</code> ein. Dabei lst Perl die <code>::</code>-Syntax als Pfadnamen auf - d.h. es wird eine Datei mit dem Pfadnamen <code>Beispiel/Spezial.pm</code> erwartet. Dies ist ein relativer Pfadname, ausgehend von einem der Verzeichnispfade, die in <img src="../../src/up.gif" width="14" height="10" alt="nach oben">&nbsp;<a href="#inc">@INC</a> gespeichert sind.</td>
</tr>
<tr>
<td class="code" nowrap="nowrap"><code>use CGI::Carp qw(fatalsToBrowser);</code></td>
<td class="tabxpl">Bindet aus dem Verzeichnis <code>CGI</code> das Modul <code>Carp.pm</code> ein. Das Symbol <code>fatalsToBrowser</code> wird der Importliste bergeben. Normalerweise wird es dann in den aktuellen Namensraum importiert, was allerdings - typisch fr Perl - gerade bei diesem populren Beispiel nicht der Fall ist. Die bergabe von <code>fatalsToBrowser</code> lst hier eine Sonderbehandlung aus.</td>
</tr>
<tr>
<td class="code" nowrap="nowrap"><code>use 5.003;</code></td>
<td class="tabxpl">Script luft nur weiter, wenn ein Perl-Interpreter installiert ist, der eine Versionsnummer gleich oder hher als 5.003 hat.</td>
</tr>
</table>

<h3 class="inf">Beachten Sie</h3>

<p>Die Anweisung:<br>
<code>use Modulname;</code><br>
ist gleichbedeutend mit:<br>
<code>BEGIN { require Modulname; import Modulname [Importliste]; }</code><br>
Die Funktion <code>use</code> leistet also die Summe aus dem, was die Funktion <img src="../../src/up.gif" width="14" height="10" alt="nach oben">&nbsp;<a href="#require">require</a> in Verbindung mit der Methode <code>import</code> leistet.</p>

<p>Wenn Sie <code>use</code> genau ein Argument bergeben und dieses Argument eine Zahl ist, also z.B. <code>5</code> oder <code>5.003</code>, dann prft Perl diese Angabe gegen die Versionsnummer des Perl-Interpreters. Ist die Versionsnummer des Perl-Interpreters niedriger als die angegebene Zahl, wird das laufende Script sofort mit einer Fehlermeldung beendet. Dies kann sinnvoll sein, um zu verhindern, dass ein Script weiterluft, das Code enthlt, der hhere Perl-Versionen erfordert.</p>

<p>Module mssen am Ende so etwas wie <code>1;</code> enthalten. Dadurch wird sichergestellt, dass das Modul korrekt eingebunden wird.</p>



<table cellpadding="4" cellspacing="0" border="0" width="100%">
<tr><td colspan="2" class="doc">
&nbsp;<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="../module/intro.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">&nbsp;<a href="../module/intro.htm">Einfhrung in das Arbeiten mit Modulen</a>
</td></tr>
<tr>
<td class="doc"><a href="konfiguration.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">&nbsp;<a href="konfiguration.htm">Funktionen fr Informationen aus Konfigurationsdateien</a>
</td>
</tr>
<tr><td colspan="2" class="doc">&nbsp;</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">&nbsp;<a href="../index.htm">Perl</a> <img src="../../src/refkap.gif" width="16" height="13" alt="Teil von">&nbsp;<a href="index.htm">Perl-Funktionen</a></td>
</tr>
</table>

<p>&copy; 2007 <img src="../../src/dok.gif" width="15" height="10" alt="Seite">&nbsp;<a href="../../editorial/impressum.htm">Impressum</a></p>

</body>
</html>