my ($section, @value); while () { chomp; my ( $temp_section, $temp_value ) = /^(?:([^:]+):)?\s*(.*)/; if ( $temp_section ) { if ( $section ) { # Process the old value somehow. } $section = $temp_section; @value = ( $temp_value ); } else { push @value, $temp_value; } }