Thread Constants in Libs (23 answers)
Opened by esskar at 2003-08-09 01:43

kabel
 2003-08-09 09:01
#58519 #58519
User since
2003-08-04
704 Artikel
BenutzerIn
[default_avatar]
du könntest per Exporter die konstant-funktionen in den namespace des callers transferieren. vorteil: du musst nur die konstantennamen selber schreiben. nachteil: "namespace-pollution". ist das überhaupt keine option? wozu brauchst du den Exporter überhaupt? wird da schon was exportiert?

ich hab gerade probiert, die subroutine main::AUTOLOAD als dispatcher einzusetzen, es ist nicht wirklich schön (ach ja, fehlerabfrage ade ;) ):
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
use strict;

package Lib::Vars;
use constant HI => "HO";

package main;
use vars qw/ $AUTOLOAD /;

print "HI", &HI, "\n";;

sub AUTOLOAD {
my $sub = $AUTOLOAD;
$sub =~ s/\w*::(\w*?)$/$1/;
$sub = "Lib::Vars::$sub";
goto &$sub;
}


du kannst konstanten übrigens auch anders erzeugen:
Wie verwende ich Konstanten?
- ex::constant::vars ist eine lösung auf tie-basis.
- zuweisung einer skalarreferenz an einen typeglob.

(ja, ich weiss, bei constant.pm stimmt einiges net, mit dem wiki wird alles viel besser, hoffentlch! 8) )
-- stefan

View full thread Constants in Libs