#!/usr/bin/perl -wl use strict; my $s = "FOO=1 BAR= RED BOO = 5.6 BAZ =3"; my %h; $h{lc $1} = $2 while $s =~ s/(\S+)\s*=\s*(\S+)//; print $_, "\t=> ", $h{$_} for keys %h; __END__ Prints: foo => 1 baz => 3 bar => RED boo => 5.6 #### #!/usr/bin/perl -wl use strict; my $s = "FOO=1 BAR= RED BOO = 5.6 BAZ =3"; my @a = split /[\s=]+/, $s; my %h = map {$_%2 ? $a[$_] : lc $a[$_]} 0..$#a; print $_, "\t=> ", $h{$_} for keys %h;