use Data::Dumper; my %h = map { /^([^=]+?)\s*=\s*(\S.*)/ } ; print Dumper \%h; __DATA__ a = fred b = 1 ignorethis c = === #### $VAR1 = { 'c' => '===', 'a' => 'fred', 'b' => '1' };