in reply to Error with IniFile and Config::Ini

I checked the code and I think I see the problem. Both of the ini modules you mention use the exact same idiom that I would never use and it doesn't surprise me that a bug cropped up related to it:

my $self = bless {}, $class; # Use an indexed hash to preserve the order. tie %{ $self->{sections} }, 'Tie::IxHash';
which boils down to:     tie %{undef}, 'Tie::IxHash'; so I'd replace it with:     tie %{ $self->{sections}= {} }, 'Tie::IxHash';

Sure, you could consider it a bug in Perl (especially since it used to work the other way), but I still consider it dangerous code to be avoided (depending on autovivification to kick in soon enough).

        - tye (but my friends call me "Tye")

Replies are listed 'Best First'.
(Flame) Re: (tye)Re: Error with IniFile and Config::Ini
by Flame (Deacon) on Jan 15, 2002 at 00:54 UTC
    After changing al lthe code to match your reccomendation tie %{ $self->{sections}= {} }, 'Tie::IxHash';, it still doesn't work:

    perl -we "use IniFile; my $ini = new IniFile('test.tmp');$ ini->put(['test']) or die($!);" Use of uninitialized value in exists at E:/Perl/site/lib/Tie/IxHash.pm + line 41. Use of uninitialized value in exists at E:/Perl/site/lib/Tie/IxHash.pm + line 47. Use of uninitialized value in hash element at E:/Perl/site/lib/Tie/IxH +ash.pm line 56. Use of uninitialized value in hash element at E:/Perl/site/lib/Tie/IxH +ash.pm line 56. No such file or directory at -e line 1.


    I understand the No such file or directory complaint, (although I think it's rather unnecessary, why does -e set $! ?) I still don't understand where those warnings are coming from...


    -----BEGIN GEEK CODE BLOCK-----
    Version: 3.12
    GIT d- s:++ a--- C++++ UL P+++>++++ L+ E- W++>+++ N !o K- w+ O---- M-- V--
    PS PE Y- PGP t++(+++) 5(+++)++++ X R+@ tv+ b+++ DI+ D- G e->+++ h! r-- y-
    ------END GEEK CODE BLOCK------
    Translate

    "Weird things happen, get used to it."

    Flame ~ Lead Programmer: GMS