Config-Checker
view release on metacpan or search on metacpan
lib/Config/YAMLMacros.pm view on Meta::CPAN
use File::Slurp qw(read_file);
use Carp qw(confess);
use File::Basename qw(basename dirname);
require Hash::Merge;
require Exporter;
our @ISA = qw(Exporter);
our @EXPORT = qw(get_config);
our @EXPORT_OK = (@EXPORT, qw(listify replace));
my $max_replace_iterations = 10;
sub listify(\%@)
{
my ($href, @keys) = @_;
for my $k (@keys) {
next unless exists $href->{$k};
if (! ref($href->{$k})) {
$href->{$k} = [ $href->{$k} ];
} elsif (ref($href->{$k}) eq 'ARRAY') {
# fine
lib/Config/YAMLMacros.pm view on Meta::CPAN
my $jlist = join('|', map { "\Q$_\E" } keys %$href);
return unless $jlist;
my $re = qr/$jlist/;
my $iteration = 0;
my $replace = sub {
# print STDERR "# replacing '$_[0]' with '$href->{$_[0]}'\n";
return $href->{$_[0]};
};
for (;;) {
$$sref =~ s/($re)/$replace->($1)/ge or last;
if ($iteration++ >= $max_replace_iterations) {
confess "too many replacements in $$sref";
}
}
}
sub get_config
{
my ($config_file, %opts) = @_;
my $raw = read_file($config_file);
( run in 0.867 second using v1.01-cache-2.11-cpan-71847e10f99 )