Ambrosia
view release on metacpan or search on metacpan
lib/Ambrosia/Config.pm view on Meta::CPAN
package Ambrosia::Config;
use strict;
use warnings;
use Data::Dumper;
use base qw/Exporter/;
use Ambrosia::error::Exceptions;
use Ambrosia::core::ClassFactory;
our $VERSION = 0.010;
our @EXPORT = qw/config/;
our %PROCESS_MAP = ();
our %CONFIGS = ();
sub import
{
my $pkg = shift;
my %prm = @_;
assign($prm{assign}) if $prm{assign};
__PACKAGE__->export_to_level(1, @EXPORT);
}
sub assign
{
$PROCESS_MAP{$$} = shift;
}
sub new
{
throw Ambrosia::error::Exception::BadUsage 'Cannot create object Config';
}
sub instance
{
my $package = shift;
my $key = shift;
my $_config_data = shift;
if ( $_config_data )
{#start instance
if ( ref $_config_data eq 'HASH' )
{
$CONFIGS{$key}->{CONFIG_HASH} = 1; #$_config_data;
}
elsif(!ref $_config_data)
{
$CONFIGS{$key}->{CONFIG_FILE} = $_config_data;
$CONFIGS{$key}->{LAST_ACCESS} = (stat $_config_data )[9];
}
else
{
throw Ambrosia::error::BadParams 'Bad config params: ' . $_config_data;
}
}
elsif ( $CONFIGS{$key}->{CONFIG_FILE} )
{#ÐÑли конÑиг ÑÑоÑмиÑован и даÑа поÑледней модиÑикаÑии Ñайла не менÑлаÑÑ Ð²ÐµÑнем обÑÐµÐºÑ config
my $last_access = (stat $CONFIGS{$key}->{CONFIG_FILE} )[9];
return $CONFIGS{$key}->{OBJECT}
if defined $CONFIGS{$key}->{OBJECT}
&& defined $CONFIGS{$key}->{LAST_ACCESS}
( run in 0.661 second using v1.01-cache-2.11-cpan-5a3173703d6 )