#Hashes or Associative Arrays $food{'apple'} = 'fruit'; $food{'beef'} = 'meat'; $food{'carrot'} = 'vegetable'; print "1.\n"; print $food{'apple'}." "; print $food{'beef'}." "; print $food{'carrot'}."\n\n"; #reassign variable, % is for hashes/associative array %food = ( 'apple' => 'fruit', 'beef' => 'meat', 'carrot' => 'vegetable', ); print "2.\n"; print $food{"apple"}." "; print $food{'beef'}." "; print $food{"carrot"}."\n\n"; #both ", ' works print "3.\n"; #keys function to retrieve all keys, return a list foreach $var (keys %food) { #keys print "$var "; } print "\n\n"; print "4.\n"; foreach $var (keys %food) { #hashed values print "$food{$var} "; } print "\n\n"; print "5.\n"; #values function to retrieve all values @foodtype = values %food; for ($i = 0; $i<@foodtype; $i++) { print "$foodtype[$i] "; } print "\n\n"; #reverse key and value print "6.\n"; %ByType = reverse %food; print $ByType{'fruit'}." "; print $ByType{'meat'}." "; print $ByType{'vegetable'}."\n\n"; #copy hashes print "7.\n"; %food2 = %food; #assign 1 hash to another foreach $var (keys %food2) { #keys print "$var=>$food2{$var}; "; } print "\n\n"; #canot really control key order in hashes #sort keys in list, not really supported in hashes print "8.\n"; my @sortorder = sort keys %food2; for ($i = 0; $i<@sortorder; $i++) { print "$sortorder[$i]=>$food2{$sortorder[$i]} "; } print "\n\n"; #removing keys from a hash print "9.\n"; delete $food2{'beef'}; foreach $var (keys %food2) { #keys print "$var=>$food2{$var}; "; } print "\n\n"; #add key to hash print "10.\n"; $food2{'pork'} = 'meat'; $food2{'chicken'} = 'meat'; foreach $var (keys %food2) { #keys print "$var=>$food2{$var}; "; } print "\n\n"; #size of hash print "11.\n"; print "Hash size of food2: ",scalar keys %food2,"\n";