package LIMS::Local::Config; # creates config data as singleton instance - only requires cfg file read once # for as many app calls as necessary use strict; use warnings; use base qw(Class::Singleton); use IO::Dir; use Config::Auto; use Data::Dumper; use LIMS::Local::Utils; sub _new_instance { # warn '*** LOADING LIMS::Local::Config::instance ***'; # should be called once only my $class = shift; my $path_to_app_root = LIMS::Local::Utils::find_home(); # warn 'path_to_app_root:'.$path_to_app_root; my $d = IO::Dir->new($path_to_app_root . '/config') || die "undefined \$d in $0", $@; # load any lims_*.pl files in config dir: my @config_files = map { $path_to_app_root . '/config/' . $_ } grep { $_ =~ /lims_(.*)\.pl$/ } # lims_*.pl $d->read; # warn Dumper \@config_files; my %combined = (); for my $file ( @config_files ) { my $cfg = Config::Auto::parse($file, format => 'perl'); %combined = (%combined, %$cfg); } # warn Dumper \%combined; return \%combined; } 1;