http://www.perlmonks.org?node_id=1007854


in reply to variable as hash name

After you fix the error message you're getting by removing "our" from line 9 (our %$variable ... just won't work), then you can move onto the strictures violation on line 13: print %$variable is still a strict violation even if you've already created the variable. If your code is going to be full of those constructs, you're going to have to run without strict 'refs', or jump through little "no strict 'refs'" contortions all over the place.

You say this is something you really want to do. So do it. Just don't ask "strict" to condone it.

use strict; use warnings; our $variable = 'name01'; no strict 'refs'; %$variable = ( valorC => 'value03', valorD => 'value04', ); print %$variable, "\n";

I'm interested in hearing why your code might fit into the 0.5% of code that needs to implement this powerful and dangerous feature. Are you writing an exporter? What is the benefit? Is it worth it? Are you sure it's not a problem that could be solved by another level of indirection? You might just need a 3rd floor, not a 2nd basement.


Dave