sub Config { my $self = shift; my $class = ref $self || $self; ## compute filename relative to me, based on my packagename my $p = __PACKAGE__; (my $s = $class) =~ s/^\Q$p\E::// or die "$p is not prefix of $class!"; $p = __FILE__; $p =~ s/\.pm$// or die "$p doesn't end with .pm!"; require File::Spec; my $file = File::Spec->catfile($p, split '::', $s) . ".cfg"; my $config = do { if (-e $file) { require Config::Scoped; Config::Scoped->new (file => $file, warnings => {qw(permissions off parameter off)}, )->parse; } else { {} } }; { no strict 'refs'; *{$class . '::Config'} = sub { $config }; } return $config; }