convert string in to hash in perl using split -
$hashdef = "mouse=>jerry, cat=>tom, dog=>spike"; %hash = split /,|=>/,$hashdef; print "$_=>$hash{$_}" foreach(keys %hash); mouse=>jerrydog=>spikecat=>tom i new perl can 1 explain regular expression inside split function able know | used choice of both still confused
%hash = split /|=>/,$hashdef; i ouput
s=>pe=>j=>et=>or=>rm=>,y=>,u=>sm=>og=>d=>oc=>ai=>kt %hash = split /,/,$hashdef; mouse=>jerry=>cat=>tomdog=>spike=> please explain above condition
split's first argument defines separates elements want.
/,|=>/ matches comma (,) or equals sign followed greater-than sign (=>). they're literals here, there's nothing special them.
/|=>/ matches zero-length string or equals sign followed greater-than sign, , splitting on zero-length string splits string individual characters; therefore, in hash, m map o, u map s, etc. appear jumbled in output because hashes don't have definite ordering.
/,/ splits on comma. you're creating hash maps mouse=>jerry cat=>tom , dog=>spike nothing.
Comments
Post a Comment