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

Export aus Modulen: %EXPORT_TAGS = () ... klappt nicht.

Reader: 1


<< >> 5 entries, 1 page
Matze
 2005-11-04 21:57
#59738 #59738
User since
2005-08-29
222 articles
BenutzerIn
[Homepage] [default_avatar]
Ich möchte gerne mit Export-Tags meine Funktionen Exportieren.

Geschriebn habe ich dazu im Modul:
Code: (dl )
1
2
3
4
5
6
7
8
package WritE;

require Exporter;
@ISA = qw(Exporter);
%EXPORT_TAGS = (':win' => [qw/color title write fill box/],
':tk' => [qw/mw geo/],
':all' => [qw/:win :tk/]
);


Im Programm (Aufruf):
Code: (dl )
use WritE qw(:win);


Nun bekomme ich allerdings immer diese Fehlermeldung:

"win" is not defined in %WritE::EXPORT_TAGS at C:\Daten\Programmieren\Perl\Sonstige\Module\WritE\demos\win\all.pl line 12
       main::BEGIN() called at ../..//WritE.pm line 12
       eval {...} called at ../..//WritE.pm line 12
Can't continue after import errors at C:\Daten\Programmieren\Perl\Sonstige\Module\WritE\demos\win\all.pl line 12
BEGIN failed--compilation aborted at C:\Daten\Programmieren\Perl\Sonstige\Module\WritE\demos\win\all.pl line 12.

Kann mir da jemand weiterhelfen ?

MfG. Matze
Mit freundlichen Grüßen: Matze
betterworld
 2005-11-04 22:01
#59739 #59739
User since
2003-08-21
2613 articles
ModeratorIn

user image
Lass in %EXPORT_TAGS mal die Doppelpunkte weg.\n\n

<!--EDIT|betterworld|1131134513-->
Matze
 2005-11-05 09:46
#59740 #59740
User since
2005-08-29
222 articles
BenutzerIn
[Homepage] [default_avatar]
OK, das habe ich gemacht, nun bekomme ich diese Fehlermeldung, die Funktionen seien nicht exportiert:

"fill" is not exported by the WritE module
"color" is not exported by the WritE module
"title" is not exported by the WritE module
"box" is not exported by the WritE module
"write" is not exported by the WritE module
Can't continue after import errors at C:\Daten\Programmieren\Perl\Sonstige\Module\WritE\demos\win\all.pl line 12
BEGIN failed--compilation aborted at C:\Daten\Programmieren\Perl\Sonstige\Module\WritE\demos\win\all.pl line 12.

Ich habe in CGI.pm nachgesehen, da ich schon lange keine %EXPORT_TAGS mehr verwendet habe, und dort steht es genau so, wie ich es zu Anfang gepostet habe.

MfG. Matze
Mit freundlichen Grüßen: Matze
pq
 2005-11-05 13:24
#59741 #59741
User since
2003-08-04
12207 articles
Admin1
[Homepage]
user image
our @EXPORT_OK = qw(fill color title box write);

btw:
require Exporter;
@ISA = qw(Exporter);

schreibt sich viel kürzer als
use base 'Exporter';

ausserdem sei dir die benutzung von strict ans herz gelegt (Wiki:use strict)
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
Matze
 2005-11-06 20:58
#59742 #59742
User since
2005-08-29
222 articles
BenutzerIn
[Homepage] [default_avatar]
Danke!
Jetzt funktioniert es, ich habe nochmal in CGI.pm nachgesehen und herausgefunden, das dort mit einem eigenen import, und export-Mechanismus gearbeitet wird.

Wäre es ein größeres Programm gewesen, dann hätte ich use strict; benutzt, aber das Programm sollte nur ein Beispiel für WritE.pm sein.

Danke nochmal.

MfG. Matze
Mit freundlichen Grüßen: Matze
<< >> 5 entries, 1 page



View all threads created 2005-11-04 21:57.