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