my $string = "name=alex&sex=m&age=20"; my @array = split(/&/,$string); my %hash_init; foreach my $key(@array) { my ($key1,$val1) = split(/=/,$key); $hash_init{$key1}=$val1; } use Data::Dumper; die Dumper(%hash_init);