Skip to content

Commit e97abef

Browse files
author
Eugene Ponizovsky
committed
Improved logic of variable resolving
1 parent 97a808f commit e97abef

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

lib/Config/Processor.pm

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ sub _process_node {
214214

215215
if ( !ref($node) && $self->{interpolate_variables} ) {
216216
$node =~ s/\$((\$?)\{([^\}]*)\})/
217-
$2 ? $1 : $self->_resolve_var( $3 )/ge;
217+
$2 ? $1 : ( $self->_resolve_var( $3 ) || '' )/ge;
218218
}
219219
elsif ( ref($node) eq 'HASH' && $self->{process_directives} ) {
220220
if ( defined $node->{var} ) {
@@ -268,20 +268,21 @@ sub _resolve_var {
268268

269269
my $vars = $self->{_vars};
270270

271-
unless ( defined $vars->{$var_name} ) {
271+
unless ( defined $vars->{$var_name} ) {
272272
my @tokens = split( /\./, $var_name );
273273
my $pointer = $self->{_config};
274274

275+
my $value;
276+
275277
while ( 1 ) {
276278
my $token = shift @tokens;
277279

278280
if ( ref($pointer) eq 'HASH' ) {
279281
last unless defined $pointer->{$token};
280282

281283
if ( !@tokens ) {
282-
$vars->{$var_name}
283-
= $self->_process_node( $pointer->{$token} );
284-
$pointer->{$token} = $vars->{$var_name};
284+
$value = $self->_process_node( $pointer->{$token} );
285+
$pointer->{$token} = $value;
285286

286287
last;
287288
}
@@ -299,9 +300,8 @@ sub _resolve_var {
299300
last unless defined $pointer->[$token];
300301

301302
if ( !@tokens ) {
302-
$vars->{$var_name}
303-
= $self->_process_node( $pointer->[$token] );
304-
$pointer->[$token] = $vars->{$var_name};
303+
$value = $self->_process_node( $pointer->[$token] );
304+
$pointer->[$token] = $value;
305305

306306
last;
307307
}
@@ -311,10 +311,10 @@ sub _resolve_var {
311311
$pointer = $pointer->[$token];
312312
}
313313
}
314-
}
315314

316-
unless ( defined $vars->{$var_name} ) {
317-
$vars->{$var_name} = '';
315+
if ( defined $value ) {
316+
$vars->{$var_name} = $value;
317+
}
318318
}
319319

320320
return $vars->{$var_name};

0 commit comments

Comments
 (0)