Schrift
[thread]5643[/thread]

Fehler beim Einbinden eines Modules: Ka wieso das so ist (Seite 2)

Leser: 3


<< |< 1 2 3 4 5 6 >| >> 59 Einträge, 6 Seiten
Strat
 2003-08-18 00:35
#73637 #73637
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
teste mal
Code (perl): (dl )
1
2
3
4
5
6
7
BEGIN {
  use FindBin ();
  use lib (&#36FindBin::Bin);
}

use pseudecom::WebDB;
use pseudecom::WebDB::PseudEcom;

und achte auf korrekte gross-/Kleinschreibung der Modulnamen und packages (auch wenn es unter Windows nur teilweise eine Rolle spielt)
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
SirLant
 2003-08-18 00:39
#73638 #73638
User since
2003-08-04
516 Artikel
BenutzerIn
[default_avatar]
Findet beide Module nicht, aber er hat den Pfad (E:/WWW/cgi-bin/pseudecom) jetzt wenigstens in @INC

Ich versteh nicht wieso, das nicht geht, die Namen alle absolut richtig sind :(

Die fertige Beispieldatei funktioniert, die sieht so aus:
index.pl
Code (perl): (dl )
1
2
3
4
5
6
use strict;
use lib qw(/usr/local/apache/lib/perl);
use CGI qw(:standard escape escapeHTML);
use lib qw(/usr/local/apache/lib/perl);
use WebDB;
use WebDB::PseudEcom;

PseudEcom.pm
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
package WebDB::PseudEcom;

# öffentliche Funktionen, die exportiert werden

require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(
    gib_haupt_url
    gib_home_link
    gib_dokumente_link
    gib_zooladen_link
    gib_kontakt_link
    gib_zufgarantie_link
    gib_datumnschutz_link
    gib_feedback_link
    gib_umfrage_link
    gib_kkartentyp_liste
    gib_ablauf_monat_liste
    gib_ablauf_jahr_liste
    standardlayout
    schwerer_fehler
);

Ich habe bei den Funktionen das gib weggelassen(jedenfalls bei einigen), sonst ist da nichts anderst , oder ich seh da nichts\n\n

<!--EDIT|SirLant|1061154239-->
--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!
SirLant
 2003-08-18 03:12
#73639 #73639
User since
2003-08-04
516 Artikel
BenutzerIn
[default_avatar]
Ich kapituliere und werde akzeptieren, dass ich unfähig bin das korrekt einzubinden(btw das echte geht auf einmal auch nimmer *freu* ;)).
Würd aber für die Zukunft gerne wissen wie man Module richtig einbindet(und eine Erklärung zu Begin wäre gut) und wie man den Exporter benutzt.
Dachte bis vorhin eigentlich ,dass ich das kann :(
--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 11:58
#73640 #73640
User since
2003-08-04
704 Artikel
BenutzerIn
[default_avatar]
mach dir mal keinen kopf, das kommt vor. heute ist ja wieder ein tag. ;) der fehler kann auch ganz woanders liegen, s.u.

benutze einen systematischen ansatz. das könnte z.b. so aussehen:

1. prüfe dateien und verzeichnisse. du hast ja angesprochen, dass du zwei index.cgi dateien hast => ändere die in zwei eindeutige namen. etc.
2. prüfe die module, die symbole exportieren, mit einem testskript. danach bist du sicher, dass diese funktionieren. damit schließt du aus, dass sich zwei fehler überlagern und dich verwirren. du findest auf dem <!--cpan1--><a href="http://search.cpan.org/search?query=%22Test::Simpl..." target="_blank">CPAN: <!--cpan2--><!--cpan3--></a><!--cpan4--> module, mit denen das leicht gemacht wird.
3. prüfe jetzt erst die eigentlichen skripte, ob sie genauso wie die testskripte die module einziehen.

vielleicht fällt dir noch eine andere sinnvolle ordnung ein.
problem [aufspalten in] n subprobleme [aufspalten in] n*m subprobleme etc.

HTH
-- stefan
SirLant
 2003-08-18 15:30
#73641 #73641
User since
2003-08-04
516 Artikel
BenutzerIn
[default_avatar]
ok, mal sehen wo der Fehler liegt.Werde das Script nochmal neu schreiben und dieses mal die Funktionen so lassen, wie sie im Buch stehen.\n\n

<!--EDIT|SirLant|1061206214-->
--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!
Strat
 2003-08-18 16:24
#73642 #73642
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=SirLant,18.08.2003, 01:12]...und wie man den Exporter benutzt.[/quote]
Den Exporter habe ich vor einigen Jahren oefter benuetzt, bin dann jedoch draufgekommen, dass der durch die Namensraumverunreinigung oft mehr Probleme macht als er loest, weswegen ich ihn jetzt fast nie mehr verwende.
Ich binde auch externe Module haeufig mit
use CGI (); # no namespace pollution
ein.
Wo sieht man einfacher, von wo eine Sub herkommt?
Code (perl): (dl )
1
2
3
my &#36x = param('x');
# oder
my &#36x = &CGI::param('x'); ?
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
SirLant
 2003-08-18 16:46
#73643 #73643
User since
2003-08-04
516 Artikel
BenutzerIn
[default_avatar]
Hier:
Code (perl): (dl )
my &#36x = &#36cgi->param('x');
;)

Verstehe was du meinst, aber dies ist ja nur ne kleine Anwendung, aus nem Buch.Würde für das wohl eher OOp benutzen, finde es für solche Dinge ganz praktisch(nur bei CGI, mag ich die normale Methode lieber).
--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!
SirLant
 2003-08-19 18:50
#73644 #73644
User since
2003-08-04
516 Artikel
BenutzerIn
[default_avatar]
Mal ne kurze Frage zu OOP(wollt net extra nen Thread aufmachen und hat ja was mit diesem Modul zu tun).
Wenn ich nen Objekt nur dazu brauche um in den anderen namensraum "einzudringen", sprich die Funktionen von dort zu benutzen, kann ich den Konstruktor, dann einfach so schreiben:

sub new {
my $class = @_;
return( bless ($class));
}

Wenn das Modul PseudEcom heißt, kann ich das ja dann so aufrufen:

$peh = PseudEcom->new();

$peh->funktion();
--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!
Relais
 2003-08-19 18:56
#73645 #73645
User since
2003-08-06
2261 Artikel
ModeratorIn
[Homepage] [default_avatar]
bless REF,CLASSNAME

<!--pod_f1--><a href="http://www.perldoc.com/perl5.8.0/pod/func/bless.ht..." target="_blank">perldoc <!--pod_f2-->-f bless<!--pod_f3--></a><!--pod_f4-->

Edit: zu früh verschickt... also nein, so geht es nicht, es ist nur fast richtig.
bless() braucht eine Referenz auf eine Perl-Datenstruktur, etwa ein Hash:

Code (perl): (dl )
my &#36self = bless { } , &#36class;


oder

Code (perl): (dl )
1
2
my &#36self = { };
bless &#36self, &#36class;
\n\n

<!--EDIT|Relais|1061305282-->
Erst denken, dann posten --
27. Deutscher Perl- u. Raku -Workshop 12. bis 14. Mai 2025 in München.

Winter is Coming
SirLant
 2003-08-19 19:03
#73646 #73646
User since
2003-08-04
516 Artikel
BenutzerIn
[default_avatar]
Ok, also geb ich bless einfach eine leere Datenstruktur.
--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 5 6 >| >> 59 Einträge, 6 Seiten



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