This parses OK
It shouldn't. The line 'my %config = {};' should trigger the error 'Reference found where even-sized list expected'
Assuming we change it to 'my %config = ();' it still doesn't work, since %config is lexically scoped and the do block doesn't seem to be able to access lexically scoped variables. If you change it to:
our %config = ();Then you should get the effect you're after.
Having said that, evaluating a config file to set global variables is not a great idea. In fact this is the exact problem XML::Simple was written to solve. If your config file was called scriptname.xml and looked like this:
<config> <username>zxcvb</username> <password>zzzzz</password> </config>
Then you could use it like this:
use XML::Simple; my $config = XMLin(); print $config->{username};
In real life, you would set explicit values for XMLin's keyattr and forcearray options and you'd probably also want to investigate the caching options.
In reply to Re: "do" what?
by grantm
in thread "do" what?
by cLive ;-)
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |