This is a quick dirty little script that I wrote to parse INI files on Microsoft Windows OS where I wasn't allowed to install Config::IniFiles or a similar module from CPAN.
INI files where data is separated by colon (:) or equal to sign (=) are supported.
Output
INI files where data is separated by colon (:) or equal to sign (=) are supported.
#!/usr/bin/perl # Released under the same license(s) as Perl use strict; use warnings; use Data::Dumper; my $ini = {}; my $header; while (<DATA>) { chomp; # ignore blank lines next if /^\s*$/; # ignore commented lines next if /^\s*\;|#/; # check for section header if ( /^\s*\[([^\]]+)\]/ ) { $header = $1; # remove leading and trailing white spaces $header =~ s/^\s*|\s*$//g; $ini->{$header} = {}; } # check for section data if (/(\S+)\s*[=:]\s*(.*?)\s*$/) { $ini->{$header}->{$1} = $2; } } # the data could be printed as # $ini->{SECTION_HEADER}->{key} for my $m (qw/odbc.allow_persistent odbc.check_persistent odbc.max_persistent/) { print "$m = ", $ini->{ODBC}->{$m}, "\n"; } for my $n (qw/NoOfReplicas DataDir DataMemory/) { print "$n = ", $ini->{'NDBD DEFAULT'}->{$n}, "\n"; } __DATA__ # taken from vanilla php.ini # notice the leading and trailing spaces [ ODBC ] odbc.allow_persistent = On odbc.check_persistent = On odbc.max_persistent = -1 odbc.max_links = -1 odbc.defaultlrl = 4096 odbc.defaultbinmode = 1 # taken from config.small.ini [NDBD DEFAULT] NoOfReplicas: 2 DataDir: /add/path/here FileSystemPath: /add/path/here DataMemory: 600M IndexMemory: 100M BackupMemory: 64M
Output
odbc.allow_persistent = On
odbc.check_persistent = On
odbc.max_persistent = -1
NoOfReplicas = 2
DataDir = /add/path/here
DataMemory = 600M
odbc.check_persistent = On
odbc.max_persistent = -1
NoOfReplicas = 2
DataDir = /add/path/here
DataMemory = 600M