Thread Umgang mit projektweiten Konstanten (4 answers)
Opened by gkaiser at 2008-01-29 15:30

MatthiasW
 2008-01-29 17:42
#105326 #105326
User since
2008-01-27
367 Artikel
BenutzerIn
[default_avatar]
Ich benutze für Konstanten immer folgendes:
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
24
25
package XXX; # fuer XXX den Namen des package einsetzen

use strict;
use warnings;

my %ERROR = (
# Fehlerkonstanten
);

my %CONST = (
# andere Konstanten
);

sub import
{
my( $class ) = caller( @_ ); # uebergeordneten packagenamen holen

no strict; # strict abschalten
*{$class.'::error'} = sub (*) { $ERROR{$_[0]} }; # error() sub im uebergeordneten package erstellen
*{$class.'::const'} = sub (*) { $CONST{$_[0]} }; # const() sub im uebergeordneten package erstellen
} # import

22;

__END__

Im Skript kann man dann einfach mittels 'use XXX' die Konstanten einbinden, welche dann über die Funktionen const() und error() im aktuellen package verfügbar sind.

Beispiel:
Code: (dl )
1
2
3
4
5
6
7
8
9
#!/usr/bin/perl

use strict;
use warnings;

use XXX; # XXX wieder ersetzen

print const HALLO;
do_something() or die error 1001;

HALLO müsste natürlich vorher in %XXX::CONST und 1001 in %XXX::ERROR definiert worden sein.

MfG
perl -E'*==*",s;;%ENV=~m,..$,,$&+42;e,$==f;$"++for+ab..an;@"=qw,u t,,print+chr;sub f{split}say"@{=} me"'

View full thread Umgang mit projektweiten Konstanten