http://qs321.pair.com?node_id=11111668

Ratazong has asked for the wisdom of the Perl Monks concerning the following question:

Dear Monks,

I'm struggeling with packages and eval ... here is my short example:

package items; use strict; use warnings; use Data::Dumper; use Exporter; my %items; 1; sub initItems { $items{1}{Name} = "Rusty Sword"; # fine $items{2}{Value} = 2; # fine eval ("$items{3}{Value} = 2;"); # ERROR: Use of uniniti +alized value in concatenation (.) or string at items.pm line 16. (th +is line) print( Data::Dumper->Dumpxs( [ \ %items ], [ qw{ *items } ] )); }
When running it (calling items::initItems(); in my main program), I get the error mentioned above, and the output is:
%items = ( '1' => { 'Name' => 'Rusty Sword' }, '3' => {}, '2' => { 'Value' => 2 } );
What is wrong? Why does the eval somehow access my hash, but does not add the value? Is it something obvious and I'm just blind today?

Thanks for help! Rata