$hash{$key}= 'ape:b:cat' #stores the values 'ape','b' and 'cat' into the hash using ':' as delimiter #simple but the delimiter better not be in any values (you would have to escape the delimiter which is messy) @values= split /:/,$hash{$key}; #get the values out of the string # checking for a specific value if ($hash{$key}=~/(^|:)$whatimlookingfor(:|$)/) { print "found it"; } $hash{$key}.= ':' . $anothervalue; #add another value (but if the hash value was empty you have just added two values, an empty string and $anothervalue. This is another disadvantage) #### $hash{$key}= ['ape','b','cat']; #stores the values 'ape','b' and 'cat' into the hash @values= @{$hash{$key}}; #get all the values $value= $hash{$key}->[2]; #get the third value $value= $hash{$key}[2]; #get the third value, short form push @{$hash{$key}}, $anothervalue; #add a value