Schrift
[thread]5643[/thread]

Fehler beim Einbinden eines Modules: Ka wieso das so ist

Leser: 3


<< |< 1 2 3 4 ... 6 >| >> 59 Einträge, 6 Seiten
SirLant
 2003-08-17 23:34
#73627 #73627
User since
2003-08-04
516 Artikel
BenutzerIn
[default_avatar]
Ich bin hier bald am verzweifeln, ständig meckert der Interpreter, über irgendwas, hat man das eine behoben kommt das nächste und dieses mal folgendes:
Quote
Can't locate PseudEcom.pm in @INC at index.cgi line 7.

Er bricht danach auch ab.

der Kopf der Index.cgi sieht so aus

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
#!e:/programme/bin/perl.exe -w
#index.cgi - Homepage der PseudEcom

use strict;
use lib qw /./;
use WebDB;
use WebDB::PseudEcom;
use CGI qw /:standard/;
use CGI::Carp qw /fatalsToBrowser/;


die des Moduls PseudEcom.pm so:
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
package WebDB::PseudEcom;

#öffentliche Funktionen die exportiert werden:

require Exporter;
@ISA = qw /Exporter/;
@Exporter = qw ( 
            haupt_url
            home_link
            dokumente_link
            tierpflege_link
            kontakt_link
            zufgarantie_link
            datenschutz_link
            feedback_link
            vote_link
            kkartentyp_liste
            ablauf_monat_liste

            ablauf_jahr_liste
            standardlayout
            schwerer_fehler
        );

use strict;
use lib qw /./;
use CGI qw /:standard escape escapeHTML/;
use WebDB;


der Physikalische Pfad so:
E:\WWW\cgi-bin\pseudecom\index.cgi
E:\WWW\cgi-bin\pseudecom\WebDB\PseudEcom.pm
hab ich kopiert, also es muss stimmen

Weiß aber nicht wo der fehler liegt :(
--Programming today is a race between Software Enginers striving to build bigger and better idiot-proof Programs,
and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning!
Crian
 2003-08-17 23:51
#73628 #73628
User since
2003-08-04
5870 Artikel
ModeratorIn
[Homepage]
user image
Liegt der Pfad E:\WWW\cgi-bin\pseudecom\WebDB\ in @INC?

Edit: Probier mal lib use E:\WWW\cgi-bin\pseudecom\WebDB; testweise, wenns damit geht, wars vorher nicht im @INC.\n\n

<!--EDIT|Crian|1061149936-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
SirLant
 2003-08-17 23:52
#73629 #73629
User since
2003-08-04
516 Artikel
BenutzerIn
[default_avatar]
Ich mache doch use lib qw /./;
das fügt doch das aktuelle verzeichnis+Unterverzeichnisse hinzu

Der Interpreter, gibt aber nur die Standardverzeichnisse aus
--Programming today is a race between Software Enginers striving to build bigger and better idiot-proof Programs,
and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning!
Crian
 2003-08-17 23:54
#73630 #73630
User since
2003-08-04
5870 Artikel
ModeratorIn
[Homepage]
user image
Wieso + Unterverzeichnis?

Und wenn dann lieber
Code: (dl )
1
2
use FindBin;
use lib $FindBin::$Bin;

falls Du mal das Skript aus einem anderen Verzeichnis heraus aufrufst, dann ist "." nämlich das andere Verzeichnis.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
SirLant
 2003-08-17 23:58
#73631 #73631
User since
2003-08-04
516 Artikel
BenutzerIn
[default_avatar]
Hab eben was schlimmes entdeckt, der hat es nicht gefunden, weil ich die falsche index.cgi(hab die 2mal) benutzt habe und diese hat den Unterordner WebDB nicht.
Die richtige Version hat aber auch nen Fehler(von dem ich glaubte er ist weg und jetzt wäre dieser falsche da).

Quote
Undefined Subroutine &amp; main::dokumente_link called at index.cgi line 11


Zeile 11 sieht so aus:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
my &#36page = h3 ('Willkommen auf der Webseite von PseudEcom.')
       . p ('Hier finden Sie Produkte und Dienstleistungen, die Sie alle online'
          . 'kaufen können')
       . ul (
          li ('Sie wünschen sich finanzielle Unabhängigkeit? Lesen sie unsere'
            
 . dokumente_link ('Geheimnisse der Finanz') . '.'),
          li ('Wir bieten Ihnen auch' . tierpflege_link ('Tierpflegeprodukte') . '.'),
          li ('Lesen Sie unsere Kundenzufriedenheits-'
            
 . zufgarantie_link ('Garantie') . '.'),
          li ('Sie haben eine Frage, einen Kommentar? Wir freuen uns auf'
            
 . feedback_link ('Ihr Feedback') . '.'),
          li ('Wie Sie uns' . kontakt_link ('erreichen') . '.'),
          li ('Lesen sie auch unsere' . datenschutz_link ('Datenschutzrichtlinien') . '.'),
          li ('Wie gefällt ihnen unsere Site?' . vote_link ('Stimmen Sie ab!'))
       );

Also die erste hier ist die 11

und die Funktion liegt in PeusdEcom.pm und wird wie man oben sieht ja mit dem Exporter "exportiert".

Die Funktion sieht so aus:
Code (perl): (dl )
1
2
3
4
5
6
sub dokumente_link {

    my &#36bez = shift;

    return (gib_link (gib_url ("doku_laden.pl"), &#36bez));
}
\n\n

<!--EDIT|SirLant|1061150501-->
--Programming today is a race between Software Enginers striving to build bigger and better idiot-proof Programs,
and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning!
kabel
 2003-08-18 00:10
#73632 #73632
User since
2003-08-04
704 Artikel
BenutzerIn
[default_avatar]
nix unterverzeichnisse. wenn du sagst
Code (perl): (dl )
use Blah;

und Blah.pm liegt nicht in den durch @INC referenzierten verzeichnissen => boom.

Exporter erwartet die zu exportierenden einträge in @EXPORT, und nicht in @Exporter.

HTH
-- stefan
SirLant
 2003-08-18 00:13
#73633 #73633
User since
2003-08-04
516 Artikel
BenutzerIn
[default_avatar]
Hm ändert aber auch nichts an meinem derzeitigen Problem, da es nur eine Funktion nicht findet, die anderen schon auch wenn ich es ändere :(

Irgenwo hat sich wohl nen kleiner Fehler eingeschliche, ändere ich alle drei Stellen wo der Name auftaucht, bringt der Interpreter, den gleichen Fehler mit dem neuen Namen :(

Edit:
Liegt wohl wirklich am falschen einbinden :(
Wie muss ich es denn ändern(in beiden scripten?), wenn das Modul in folgendem Pfad liegt

E:\WWW\cgi-bin\pseudecom\WebDB\PseudEcom.pm

das WebDB.pm liegt in
E:\WWW\cgi-bin\pseudecom\WebDB.pm

Ich weiß echt nicht wieso der die Pfade nicht nimmt(beide getestet und gleicher Fehler :()

Unter Windows ist doch
use lib qw (E:\\WWW\\cgi-bin\\pseudecom); und
use lib qw (E:\\WWW\\cgi-bin\\pseudecom\\WebDB);
richtig oder?\n\n

<!--EDIT|SirLant|1061151948-->
--Programming today is a race between Software Enginers striving to build bigger and better idiot-proof Programs,
and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning!
coax
 2003-08-18 00:33
#73634 #73634
User since
2003-08-11
457 Artikel
BenutzerIn
[default_avatar]
Hi SirLant,

wie wär's mit Kabel's Hinweis ?
Quote
Exporter erwartet die zu exportierenden einträge in @EXPORT, und nicht in @Exporter.
,,Das perlt aber heute wieder...'' -- Dittsche
kabel
 2003-08-18 00:34
#73635 #73635
User since
2003-08-04
704 Artikel
BenutzerIn
[default_avatar]
du kannst auch unter windows immer den / als pfadtrenner benutzen. 8)
-- stefan
SirLant
 2003-08-18 00:34
#73636 #73636
User since
2003-08-04
516 Artikel
BenutzerIn
[default_avatar]
Hab ich schon @Export = qw (....);
Schreibt man den komplett in großen Buchstaben oder so wie ich ihn geschrieben habe?

Ist im Grunde auch egal er meckert bei
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
require Exporter;
@ISA = qw /Exporter/;
@EXPORT = qw ( 
            haupt_url
            home_link
            dokumente_link
            tierpflege_link
            kontakt_link
            zufgarantie_link
            datenschutz_link
            feedback_link
            vote_link
            kkartentyp_liste
            ablauf_monat_liste

            ablauf_jahr_liste
            standardlayout
            schwerer_fehler
        );

und bei
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
require Exporter;
@ISA = qw /Exporter/;
@Export = qw ( 
            haupt_url
            home_link
            dokumente_link
            tierpflege_link
            kontakt_link
            zufgarantie_link
            datenschutz_link
            feedback_link
            vote_link
            kkartentyp_liste
            ablauf_monat_liste

            ablauf_jahr_liste
            standardlayout
            schwerer_fehler
        );

nur beim ersten ist es tierpflege_link und beim zweiten dokumente_link\n\n

<!--EDIT|SirLant|1061152632-->
--Programming today is a race between Software Enginers striving to build bigger and better idiot-proof Programs,
and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning!
<< |< 1 2 3 4 ... 6 >| >> 59 Einträge, 6 Seiten



View all threads created 2003-08-17 23:34.