Thread

Posted on Mon Nov 20 23:42:37 2006 by christopher
recurse on load?
I would love to get loading of properties files to "recurse".

For example, a properties file:
------------------------------------
dist.jdbc.hostname=10.87.8.206 dist.jdbc.sid=q60w10t3 dist.jdbc.url=jdbc:oracle:thin:@${dist.jdbc.hostname}:1521:${dist.jdbc.sid}

and this perl code to print that last property:
------------------------------------
$value = $properties->getProperty( "dist.jdbc.url" ); print "dist.jdbc.url=$value\n";

produces this output:
------------------------------------
dist.jdbc.url=jdbc:ws-oracle:thin:@${dist.jdbc.hostname}:1521:${dist.jdbc.sid}

Is there a way to get the definitions within the definitions evaluated? Thanks.
Direct Responses: 3591 | Write a response
Posted on Tue Nov 21 12:17:44 2006 by salva in response to 3586
Re: recurse on load?
yes, you can use a validator (an undocumented feature of Config::Properties, look in the module source for more info) to change properties as they are read:
sub my_validator { $_[2] =~ s/\$\{([\w\.]+)\}/$_[0]->getProperty($1)/ge } my $cfg = Config::Properties->new(...); $cfg->setValidator(\&my_validator); $cfg->read();
Write a response