#!/usr/bin/perl -w ####################################################### # class3_04_hash_functs # # try out a variety of Perl's hash functions: # keys, values, each # # modified by Sharon Tuttle from "Learning Perl", # by Schwartz and Phoenix # # last modified: 4-13-03 ####################################################### %order_totals = ("chocolate"=>13, "hamburger"=>10, "tofu dog"=>12, ); @hold_order_totals = %order_totals; print "@hold_order_totals\n"; # try out hash functions keys, values @foods = keys %order_totals; @quants = values %order_totals; print "\nresult from keys: @foods\n"; print "result from values: @quants\n"; # in a scalar context, both keys and values return the number # of elements in the hash; $num_foods = keys %order_totals; $num_quants = values %order_totals; print "\n\$num_foods: $num_foods\n"; print "\$num_quants: $num_quants\n"; # iterating through a hash, attempt #1: print "\ntrying foreach with a hash:\n"; foreach $item (%order_totals) { print "$item\n"; } # BETTER way to iterate through a hash: function each print "\ntrying each and while with a hash:\n"; while ( ($food, $quant) = each %order_totals ) { print "$food => $quant\n"; } # BUT --- if you need the keys in ASCIIbetical order... print "\nin ASCIIbetical order of keys:\n"; foreach $food (sort keys %order_totals) { print "$food => $order_totals{$food}\n"; } # end of class3_04_hash_functs