in reply to Interpolating Property strings help.

Your superfluous definition of isDefined makes the code quite hard to read, and the prototype on a method is silly since method dispatch never checks them, but here's what I fiddled it apart to, with a bit of guessing:
sub interpolateValues { return unless defined $INTWeb::Properties::INTERPOLATE_VALUES; my $self = shift; my $list = shift; my $get_value_for = sub { my $var = shift; # !!! # the following doesn't seem right # don't you need to return $list->{var} # if ->{Resolved}->{var} is undef? # that seems to be your culprit return $self->{Resolved}->{$var} if defined $list->{$var} or defined $self->{Resolved}->{$var}; die "FATAL: $var is not a valid propery variable name\n"; }; while(my($key, $val) = each %$list) { if($val =~ s/\$\{(.*?)\}/$get_value_for->($1)/ge) { # ??? # you don't seem to be storing this anywhere? } else { $self->{Resolved}->{$key} = $val; delete $list->{$key}; } } }

Makeshifts last the longest.