PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Perl und use module Problem



neo2k
25-10-2005, 23:26
Hallo,

ich habe ein grosses Problem mit perl und use.

Ich habe 2 packages in perl. In jedem package hab ich Funktionen, welche ich in dem anderen Modul brauche. Ich brauche also jeweils nen use des anderen Moduls.

package a;
use b;
sub bla() {
}
---
package b;
use a;
bla();

Ich nutze das ganze als Website, also als cgi-scipt.

Ich bekomme aber folgende Meldung:

"bla" is not exported by the a module
Can't continue after import errors at b.pm line 2

Geht sowas oder wie kann man diesen Fehler umgehen ?

Vielen Dank
Torsten

Molaf
26-10-2005, 06:07
Der Fehler müsste ja in einer Subfunktion von b.pm auftauchen, und da müsstest Du auch ganz zu Anfang use a; eingeben.

michael.sprick
26-10-2005, 10:10
Hi,

Da gibt es zwei Möglichkeiten - bei der ersten musst Du den Klassenbezug (bzw. den Bezug auf das package) direkt herstellen... Das bedeutet, dass Du alle Methoden und Funktionen aus Klasse 'a' so aufrufst:


a::Sub1();


die andere Möglichkeit, Subfunktionen aus a in main verfügbar zu machen ist, die entsprechenden Funktionen zu exportieren:

Datei: a.pm


#!/usr/bin/perl
package a;
use strict;
use warnings;

use Exporter;
our @ISA = qw(Exporter);
our @EXPORT = qw(Sub1);

sub Sub1()
{
print "Hallo Welt\n";
}


Datei: main.pl


#!/usr/bin/perl
use strict;
use warnings;
use a;

Sub1(); # Funktioniert - da in a exportiert
a::Sub1(); # Funktioniert natürlich auch noch