2010-08-10 7 views
2

Existe-t-il une façon pratique d'utiliser une constante lors de la définition d'une autre constante dans Perl?Constantes "récursives" dans perl

Ce qui suit ne évidemment pas travail

use constant { 
    MAIN_DIR => "/path/to/some/dir", 
    PROP_DIR => MAIN_DIR . "/sub_dir", 
    PROP_FILE => PROP_DIR . "/props.props", 
}; 

La seule chose que je pouvais penser est plusieurs lignes use constant, mais il est un peu moche ...

Répondre

3

Selon perldoc il n'y a aucun moyen autour de ça. Au moins pas avec use constants. Je voudrais aller avec plusieurs instructions use.

5

Pour votre information, vous pouvez utiliser des fonctions constantes en premier lieu (c'est comment le constants pragma fonctionne):

sub MAIN_DIR () { "/path/to/some/dir"  } 
sub PROP_DIR () { MAIN_DIR . "/sub_dir"  } 
sub PROP_FILE() { PROP_DIR . "/props.props" } 
1
$ perl -wle 'use Readonly; Readonly my $FOO => "foo"; Readonly my $FOOBAR => $FOO . "bar"; print $FOOBAR;' 
foobar 

PBP (Perl Best Practices) recommande d'utiliser Readonly