Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]8969[/thread]

eigenes Modul einbinden: eigenes Modul einbinden

Leser: 3


<< |< 1 2 >| >> 13 Einträge, 2 Seiten
Gast Gast
 2007-05-05 19:50
#76472 #76472
Hallo,
ich bin ziemlicher Anfänger.
Ich habe 2 Module. Das eine will ich in dem anderen verwenden.

Beide sind in dem Ordner "XHTML".
Das eine heißt Elemente.pm und das andere Document.pm.
In dem Document.pm will ich das Modul Element.pm verwenden:

package XHTML::Document;
use XHTML::Element;

dabei bekomme ich die Fehlermeldung:
Can't locate XHTML/Element.pm in @INC

Kann mir jemand sagen, was ich falsch mache?
PerlProfi
 2007-05-05 20:44
#76473 #76473
User since
2006-11-29
340 Artikel
BenutzerIn
[default_avatar]
Du versuchst in deinem Document.pm das Modul XHTML/Element.pm zu laden, aber du bist schon im Ordner XHTML, und da gibt es keinen weiteren Ordner XHTML.

Mach aus deiner use-Zeile:
Code: (dl )
use XHTML::Element;

also folgendes:
Code: (dl )
use Element;


Den Rest deines codes musst du nicht ändern. Der hat ja nur was mit dem package zu tun, nicht damit wo es gespeichert ist.

Wenn du aber lieber use XHTML::Element; schreiben können möchtest, dann muss der Ordner XHTML in dein standard Perl Modulverzeichnis, welches sich auch in @INC befindet.
Meistens perl/site/lib, oder perl/lib.

MfG

edit: .pm entfernt\n\n

<!--EDIT|PerlProfi|1178468776-->
pq
 2007-05-05 21:06
#76474 #76474
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=PerlProfi,05.05.2007, 18:44]Du versuchst in deinem Document.pm das Modul XHTML/Element.pm zu laden, aber du bist schon im Ordner XHTML, und da gibt es keinen weiteren Ordner XHTML.[/quote]
nein, 'use' sucht immer in @INC, und wenn Document.pm kompiliert
wird, 'befindet' man sich nicht im verzeichnis XHTML, oder anders
gesagt, @INC wird nicht um XHTML erweitert.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Sucher
 2007-05-06 15:06
#76475 #76475
User since
2007-03-26
47 Artikel
BenutzerIn
[default_avatar]
Hallo,

wenn das Programm, welches deine Module benutzt, in XHTML/../ liegt, müsste
Code: (dl )
use XHTML::Elemente;

eigentlich funktionieren. - Bei mir gehört '.' auf jeden Fall zu @INC.
Einmal schreibst du übrigens Elemente.pm und einmal Element.pm...


@PerlProfi:

Code: (dl )
use Element.pm;


compiliert gar nicht.

Grüße,
Ansen
 2007-05-06 16:23
#76476 #76476
User since
2007-05-06
17 Artikel
BenutzerIn
[default_avatar]
Da habe ich mich dann verschrieben. Es soll immer Element.pm heißen.
Trotzdem funktioniert es nicht.
Wie du ja sagst, ist '.' ja bei @INC dabei.
Beide Module liegen ja unter XHTML.
pq
 2007-05-06 18:56
#76477 #76477
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
du gibst uns zuwenig infos.
in welchem verzeichnis befindest du dich, wenn du das skript ausführst?
wenn das skript XHTML::Document findet, aber nicht XHTML::Element,
machst du irgendwo einen fehler. kürze bitte die module und das skript
auf das notwendigste und poste hier den code, wie du das skript aufrufst
und von wo.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
renee
 2007-05-06 20:19
#76478 #76478
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Und bei einem 'use' das '.pm' bitte weglassen...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
PerlProfi
 2007-05-06 20:25
#76479 #76479
User since
2006-11-29
340 Artikel
BenutzerIn
[default_avatar]
Ja entschuldigt...
Ansen
 2007-05-06 23:07
#76480 #76480
User since
2007-05-06
17 Artikel
BenutzerIn
[default_avatar]
Also gut, hier ein paar mehr Info's.
Ich benutze ein Plug-In für Perl für Eclipse.
Und dort im Editor wird mir schon in der Zeile, in der ich das Modul einbinde ein Fehler angezeigt.

Hier mal den Code von Element.pm:
Code: (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
package XHTML::Element;
use strict;

sub new($$;$) {
my $class = shift;
my $tag = shift;
my $content = shift || '';


my $self = {
tag => $tag,
content => $content,

# Attribute
attributes => [],

# Kinder
children => [],

# Immer die lange Form
long => 0,
};
bless $self, $class;
return $self;
}
return 1;


Und jetzt den Code von Document.pm:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package XHTML::Document;
use XHTML::Element;
use strict;

sub new($) {
my $class = shift;

my $self = {
head => new XHTML::Element('head'),
body => new XHTML::Element('body'),
};
bless $self, $class;
return $self;
}
return 1;


So das waren die beiden Module. Beide liegen in dem Ordner 'XHTML'

In der 2. Zeile von 'Document.pm' wird mir der Fehler :
Can't locate XHTML/Element.pm in @INC (@INC contains: C:/Perl/site/lib C:/Perl/lib .)

Ich hoffe ich habe mich jetzt genauer ausgedrückt und ihr könnt mir helfen.
MisterL
 2007-05-06 23:23
#76481 #76481
User since
2006-07-05
334 Artikel
BenutzerIn
[default_avatar]
Das mit dem XHTML::Element ist wie eine Verzeichnisstruktur.
Und bevor ich wieder mal BEGIN und unshift etc... anbringe: die Module in C:/Perl/site/lib C:/Perl/lib kopieren kann helfen.

Gruss MisterL
“Perl is the only language that looks the same before and after RSA encryption.”
<< |< 1 2 >| >> 13 Einträge, 2 Seiten



View all threads created 2007-05-05 19:50.