Config-Merge
view release on metacpan or search on metacpan
lib/Config/Merge.pm view on Meta::CPAN
= @_ > 1 ? {@_}
: ref $_[0] eq 'HASH' ? shift()
: { path => shift() };
# Emit debug messages
$self->{debug} = $params->{debug} ? 1 : 0;
die "Parameter 'sort' must be a coderef"
if exists $params->{sort} && ref $params->{sort} ne 'CODE';
# Setup callbacks
$self->_init_callback( $_, $params->{$_} )
foreach qw(skip is_local load_as sort);
my $path = $params->{path}
or die( "Configuration directory not specified when creating a new "
. "'$class' object" );
if ( $path && -d $path && -r _ ) {
$path =~ s|/?$|/|;
lib/Config/Merge.pm view on Meta::CPAN
=cut
#===================================
sub load_as {
#===================================
my ( $self, $filename, $local ) = @_;
return $local ? '' : $filename;
}
my %callbacks = (
CODE => \&_init_code_callback,
HASH => \&_init_hash_callback,
ARRAY => \&_init_array_callback,
);
=item EXAMPLE USING C<is_local()> AND C<load_as()>
For instance, instead of using C<local.*> files, you may want to
keep versioned copies of local configs for different machines, and so use:
lib/Config/Merge.pm view on Meta::CPAN
my ( $self, $callback, $check ) = @_;
# If nothing set, use default or subclassed version
unless ($check) {
$self->{$callback} = $self->can($callback);
$self->debug("Using default or subclassed $callback()");
return;
}
$check = [$check]
unless exists $callbacks{ ref $check };
$self->debug( 'Using ' . ( ref $check ) . " handler for $callback()" );
$self->{$callback} = $callbacks{ ref $check }->( $check, $callback );
return;
}
#===================================
sub _init_code_callback {
#===================================
return $_[0];
}
#===================================
( run in 0.463 second using v1.01-cache-2.11-cpan-9b1e4054eb1 )