tags:

views:

68

answers:

3

Is there some conviented way to use one constant when defining another constant in perl?

The following obviously does not work

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

The only think I could think of is multiple use constant lines, but it's a bit ugly...

+3  A: 

According to perldoc there is no way around that. At least not with use constants.

I'd go with using multiple use statements.

musiKk
+4  A: 

FYI, you can use constant functions in the first place (that's how the constants pragma works):

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

PBP (Perl Best Practices) recommends using Readonly

nicomen