package myvars; # still not a cromulent package name use strict; use warnings; use Exporter qw(import); our @EXPORT_OK = qw(get_pass %VARSETS); use feature 'say'; use Cwd qw(abs_path); use File::Basename qw(dirname); our %VARSETS; my $me = 'myvars.pm'; my $medir = dirname( abs_path $0 ). '/MYLIB'; opendir( my $dh, $medir ) || die "Can't opendir $_[0] $!"; my @list = grep { !/^\\./ &&/.pm$/ && !/^$me$/ && -f "$medir/$_" } sort readdir($dh); closedir $dh; our $env_db_pass =""; for my $file (@list){ my $fqfile=$medir . '/'. $file; my ( $varset ) = $file =~ /^([^-]+)/; if (-r $fqfile){ say "DEBUG: reading $fqfile"; if ($VARSETS{$varset}){ warn "ERROR($varset): Already have $VARSETS{$varset}, discarding $file\n"; # die? croak? use Carp; ? }else{ require "$fqfile"; $VARSETS{$varset} = $file; } }else{ say "DEBUG: skip $fqfile" } } say "myvars.pm: CREDENTIALS($env_db_pass)"; sub get_pass { return $env_db_pass; } 1;