in reply to "do" what?

Variables declared with my are file scoped. Globals are namespace scoped. This works:

#!/usr/bin/perl use strict; use warnings; our %config; do 'config.cgi'; print keys %config, $/;

Update: Clarification, a file under do cannot see lexicals in the enclosing scope. The %config that config.cgi writes to is therefore global. When do returns, the lexical %config masks the global one which was just populated.

After Compline,
Zaxo