my $key; for( split /(?<==)/, $input ) { # Split after each "=" s#(^|\s+)(\S+)=$##; # Remove trailing key if( defined $key ) { # Not first time thru: $hash{$key}= $_; } $key= $2; # Note next key to use. }