[section_name] var=value var=value ... [section_name] var=val var=val ... #### sub UpdateConfigHash { $config_file = $ENV{'CONFPATH'}; open( CONFFILE, $config_file ) || die "$!\n"; my @config_file_contents = ; my $abs_path_section_flag = 0; my $section_flag = 0; my $section_name = ""; my $config_files_line = ""; my $config_files_line_ind = 0; while ( defined( $config_file_contents[$config_files_line_ind] ) ) { $config_files_line = $config_file_contents[$config_files_line_ind]; trim_clean( $config_files_line ); if ( $config_files_line =~ /^(\s*)#/ ) { $config_files_line_ind++; next; } if ( $config_files_line =~ /^(\s*)$/ ) { $config_files_line_ind++; next; } if ( $config_files_line =~ /^(\d+)$/ ){ $global_settings{"comm_port"} = $&; $config_files_line_ind++; next; } if ( $config_files_line =~ /^\[abs_paths\]/ ) { $abs_path_section_flag = 1; $section_flag = 0; $config_files_line_ind++; next; } if ( $config_files_line =~ /^\[(\w+)\]/ ) { $section_name = $1; $abs_path_section_flag = 0; $section_flag = 1; $section_index = 0; $config_files_line_ind++; next; } if ( $abs_path_section_flag == 1 && $section_flag == 0 ) { # indicates abs_paths is on my @temp = split( /=/, $config_files_line ); trim_clean (\$temp[0]); trim_clean (\$temp[1]); $global_settings{ $temp[0] } = $temp[1]; $config_files_line_ind++; next; } if ( $abs_path_section_flag == 0 && $section_flag == 1 ) { # indicates a section ( not abs_paths ) my @temp = split( /=/, $config_files_line ); trim_clean (\$temp[0]); trim_clean (\$temp[1]); $global_settings{ $section_name . "_" . $section_index } = $temp[1]; $section_index++; $config_files_line_ind++; next; } } }