Lists, Arrays, and Hashes
Hash Update Count
A hash value can be updated, and sorted keys make the printed result predictable.
hash update
Assigning through a hash key changes the stored value for that key.
Hash Update Count
hash_update_count.pl
Replay: real traced execution (multi-file project)
use strict;
use warnings;
my %counts = (
red => 2,
blue => 1,
);
my $color = "blue";
$counts{$color} += 1;
my @keys = sort keys %counts;
my $key_list = join(",", @keys);
my $value = $counts{$color};
print "color=$color\n";
print "value=$value\n";
print "keys=$key_list\n";
use strict;
use warnings;
my %counts = (
red => 2,
blue => 1,
);
my $color = "red";
$counts{$color} += 1;
my @keys = sort keys %counts;
my $key_list = join(",", @keys);
my $value = $counts{$color};
print "color=$color\n";
print "value=$value\n";
print "keys=$key_list\n";
use strict;
use warnings;
my %counts = (
red => 2,
blue => 1,
);
my $color = "green";
$counts{$color} += 1;
my @keys = sort keys %counts;
my $key_list = join(",", @keys);
my $value = $counts{$color};
print "color=$color\n";
print "value=$value\n";
print "keys=$key_list\n";
%counts ← 2, $color ← blue, $counts{$color} ← 2, @keys ← 2, $key_list ← blue,red
4my %counts→ 2 = (5 red => 2,6 blue => 1,7);8my $color→ blue = "blue"; #@color="red", "green"9$counts{$color}→ 2 += 1;10my @keys→ 2 = sort keys %counts2;11my $key_list→ blue,red = join(",", @keys2);12my $value→ 2 = $counts{$color}2;1314print "color=$colorblue\n";15print "value=$value2\n";16print "keys=$key_listblue,red\n";outputcolor=blue value=2 keys=blue,red
%counts ← 2, $color ← red, $counts{$color} ← 3, @keys ← 2, $key_list ← blue,red
4my %counts→ 2 = (5 red => 2,6 blue => 1,7);8my $color→ red = "red";9$counts{$color}→ 3 += 1;10my @keys→ 2 = sort keys %counts2;11my $key_list→ blue,red = join(",", @keys2);12my $value→ 3 = $counts{$color}3;1314print "color=$colorred\n";15print "value=$value3\n";16print "keys=$key_listblue,red\n";outputcolor=red value=3 keys=blue,red
%counts ← 2, $color ← green, $counts{$color} ← 1, @keys ← 3, $key_list ← blue,green,red
4my %counts→ 2 = (5 red => 2,6 blue => 1,7);8my $color→ green = "green";9$counts{$color}→ 1 += 1;10my @keys→ 3 = sort keys %counts3;11my $key_list→ blue,green,red = join(",", @keys3);12my $value→ 1 = $counts{$color}1;1314print "color=$colorgreen\n";15print "value=$value1\n";16print "keys=$key_listblue,green,red\n";outputcolor=green value=1 keys=blue,green,red
Update One Count
%countsstarts withred => 2andblue => 1.$colorisblue.$counts{$color} += 1changesbluefrom1to2.- Sorting keys prints them as
blue,red. | Key | Start | After update | | --- | --- | --- | |blue|1|2| |red|2|2|
Exercise: hash_update_count.pl
Increase one hash count, sort the keys, and print the updated value