Em geral, eu uso o GetOpt::Long para ler as opções de linha de comando.
Assim, ao invés de criar um arquivo de configuração:
foo=1
bar=2
baz=3
Eu rodo o script com as configurações desejadas:
script.pl --foo=1 --bar=2 --baz=3
Para os arquivos de configuração, Config::General