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

Exporter und %EXPORT_TAGS: Probem unter Linux



<< >> 2 Einträge, 1 Seite
Crian
 2005-04-08 18:33
#53618 #53618
User since
2003-08-04
5867 Artikel
ModeratorIn
[Homepage]
user image
Zitat aus perldoc Exporter:

Code: (dl )
1
2
3
        @EXPORT      = qw(A1 A2 A3 A4 A5);
@EXPORT_OK = qw(B1 B2 B3 B4 B5);
%EXPORT_TAGS = (T1 => [qw(A1 A2 B1 B2)], T2 => [qw(A1 A2 B3 B4)]);


So weit so gut. Ich habe ein Problem mit drei Modulen, die sich mehr oder weniger gegenseitig verwenden. Unter Windows mit Active Perl (Perl 5.8.6) läuft es problemlos, unter Linux (Perl 5.8.1) bekomme ich folgende Meldung:

Code: (dl )
"ALL" is not defined in %FeFile::EXPORT_TAGS at /home/usr207/daten/perl/forumeditor/FeGui.pm line 19



Die drei Module werden von fe.pl aus eingebunden mit:

Code: (dl )
1
2
3
4
5
6
use FindBin;
use lib $FindBin::Bin;

use FeCore qw/:ALL/;
use FeFile qw/:ALL/;
use FeGui qw/:ALL/;


in FeCore.pm steht

Code: (dl )
1
2
3
4
use base qw/Exporter/;
our @EXPORT = qw//;
our @EXPORT_OK = qw/%Config @Icon/;
our %EXPORT_TAGS = (ALL => [qw/%Config @Icon/]);


(Und kein anderes Modul wird hier verwendet.)

In FeFile.pm steht:

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
use FeCore qw/:ALL/;
use FeGui qw/:ALL/; ### ZEILE 19 ###

use base qw/Exporter/;
our @EXPORT = qw//;
our @EXPORT_OK = qw/load
create
save
datei_neu
datei_oeffnen
datei_speichern
datei_speichern_unter
bearbeiten
init/;
our %EXPORT_TAGS = (ALL => [qw/load
create
save
datei_neu
datei_oeffnen
datei_speichern
datei_speichern_unter
bearbeiten
init/]);


und in FeGui.pm steht schließlich

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
use FeCore qw/:ALL/;
use FeFile qw/:ALL/;

...

use base qw/Exporter/;
our @EXPORT = qw//;
our @EXPORT_OK = qw/tk_main
anzeige_fenster
hilfe
historie
ueber
open_or_new
tk_ende/;
our %EXPORT_TAGS = (ALL => [qw/tk_main
anzeige_fenster
hilfe
historie
ueber
open_or_new
tk_ende/]);


Was mache ich falsch und warum funktioniert es unter Windows? Kann es an den unterschiedlichen Perl-Versionen (5.8.6/5.8.1) liegen? Ich habe mal testweise das use FeFile qw/ALL/; in FeGui.pm unter die Exporter-Zeilen verschoben, aber das hat keine Änderung verursacht.
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
ptk
 2005-04-08 22:39
#53619 #53619
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
In meiner Doku steht nur ":all", kleingeschrieben. Ansonsten hilft es ungemein, wenn man mehrere Perl-Installationen auf der Kiste hat:
Code: (dl )
1
2
3
cd /usr
ls -d perl*
perl5.004_04 perl5.6.2 perl5.8.0d perl5.8.1 perl5.8.2 perl5.8.3 perl5.8.4d perl5.8.5 perl5.8.6 perl5.9.0 perl5.9.2d

(Zuhause ist es noch mehr...)
<< >> 2 Einträge, 1 Seite



View all threads created 2005-04-08 18:33.