open(CONF, ' ) { chomp $line; # skip blank lines next if $line =~ /^\s*$/; # find named sections if ( $line =~ /^\[(\w+)\]/ ) { $setting = $1; next; } # save values if ( exists $config{$setting} ) { # squash into an array if already set $config{$setting} = ref($config{$setting}) ? [ @{ $config{$setting} }, $line ] : [ $config{$setting}, $line ]; } else { $config{$setting} = $line; } }