Thread Erweitern von @INC: Anfängerfrage (19 answers)
Opened by daemon079 at 2006-03-30 17:10

Linuxer
 2006-03-30 19:04
#64206 #64206
User since
2006-01-27
3891 Artikel
HausmeisterIn

user image
[quote=master,30.03.2006, 16:38]dazu habe ich auch eine (mir etwas peinliche) frage:

Ich möchte meine eigenen Module nicht in Perl/lib usw. laden,
sondern aus einem eigenen Verzeichnis oberhalb des Skirpts.

z.b. Dateisktruktur:
meinskript.pl
libs/meinmodul.pl

Wie erreicht man sowas?[/quote]
Module sollten auf .pm enden, nicht auf .pl.

Da i.d.R. der . zum @INC gehört, kannst Du Dein Modul beispielsweise mit
Code (perl): (dl )
use libs::mein_modul;

einbinden.

Voraussetzung ist, dass das Modul auch sauber so definiert wurde, also wenigstens mit
Code (perl): (dl )
package libs::mein_modul;

eingeleitet wird.


Struktur:
skript.pl
libs/mein_modul.pm


Beispiel fuer einen Modul-Skelett:
Code (perl): (dl )
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
# Author
# Date
# Purpose

# rename package! 
#package modul_skel;
package libs::modul_skel;
use strict;
use Exporter;

# alle notwendigen Variablen, exportierbar oder auch nicht,
# muessen hier deklariert werden
use vars qw($VERSION @ISA @EXPORT $share);

$VERSION = '0.0.1';
@ISA = qw(Exporter);

# alle Objekte (Variablen, Funktionen), die auch exportiert werden sollen,
# muessen hier rein
@EXPORT = qw($share foo bar);

# Variablen
# ------------------------------------------------------------------------
#

$share = 'hello world';


# Sub-Routinen
# ------------------------------------------------------------------------
#

sub foo {
  # do foo
}

sub bar {
  # do bar
}

# Module muessen mit Status 1 beendet werden
1;

# vim: set ts=4 sw=2 et:


Modul Skelett ohne Gewähr da QuickHack.\n\n

<!--EDIT|Linuxer|1143731366-->
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!

View full thread Erweitern von @INC: Anfängerfrage