I didn't notice Scott Hutton's Config::IniFiles, and just want to share it anyway.
Put the inputs into a HASH.
HASH values modification is forbidden.
Blanks are cool.
Perl comments (#) are also cool.
use ModestIniFile;
my %addresses;
tie %addresses, ModestIniFile, 'addresses.ini';
package ModestIniFile;
use strict;
sub die_msg{ ' at ' .( join ' line ', @_[1,2] )."\n" }
sub TIEHASH{
my ($class, $file) = @_;
open IN, $file or die "File $file does not exist!".die_msg caller;
my %ini = map{ split /\s+:\s+/ } grep !/^\s*$/ && !/^[ \t]*#/, <IN
+>;
bless [ sub{ $ini{ $_[0] } }, sub{ keys %ini }, sub{ each %ini },
+sub{ scalar %ini }, sub{ undef %ini } ], $class
}
sub FETCH{ $_[0][0]->($_[1]) }
sub STORE{ die "Illegall attempt to store INIHash ".die_msg caller }
sub DELETE{ die "Illegall attempt to delete from INIHash ".die_msg cal
+ler }
sub CLEAR{ die "Illegall attempt to clear INIHash ".die_msg caller }
sub EXISTS{ $_[0]->FETCH($_[1]) }
sub FIRSTKEY{ &{ $_[0][1] }; &{ $_[0][2] } }
sub NEXTKEY{ &{ $_[0][2] } }
sub SCALAR{ &{ $_[0][3] } }
sub DESTROY{ &{ $_[0][4] } }
1;