Perl语言入门-第六章-哈希-习题
1. 题目
2. 代码与输出
ch6-family-name.pl
1 #-----------------------------------------------------------#
2 # Source: Learning Perl, chapter6, exercise-1
3 # Date: 2012-01-16
4 # Author: xiaodongrush
5 #-----------------------------------------------------------#
6 use 5.010;
7 %family_name_hash = (
8 "fred" => "flintstone",
9 "barney" => "rubble",
10 "wilma" => "flintstone", );
11
12 while(<>) {
13 chomp;
14 if(exists $family_name_hash{$_} ) {
15 say $_ . "'s family name is : " . $family_name_hash{$_};
16 } else {
17 say $_ . "'s family name not exist in hash";
18 }
19 }
20 #-----------------------------------------------------------#
2 # Source: Learning Perl, chapter6, exercise-1
3 # Date: 2012-01-16
4 # Author: xiaodongrush
5 #-----------------------------------------------------------#
6 use 5.010;
7 %family_name_hash = (
8 "fred" => "flintstone",
9 "barney" => "rubble",
10 "wilma" => "flintstone", );
11
12 while(<>) {
13 chomp;
14 if(exists $family_name_hash{$_} ) {
15 say $_ . "'s family name is : " . $family_name_hash{$_};
16 } else {
17 say $_ . "'s family name not exist in hash";
18 }
19 }
20 #-----------------------------------------------------------#
ch6-wordcount.pl
1 #-----------------------------------------------------------#
2 # Source: Learning Perl, chapter6, exercise-2
3 # Date: 2012-01-16
4 # Author: xiaodongrush
5 #-----------------------------------------------------------#
6 use 5.010;
7 while(<>) {
8 chomp;
9 if(exists $word_hash{$_}) {
10 $word_hash{$_} += 1;
11 } else {
12 $word_hash{$_} = 1;
13 }
14 }
15 foreach(sort (keys %word_hash) ) {
16 say $_ . "\t\t" . $word_hash{$_};
17 }
18 #-----------------------------------------------------------#
2 # Source: Learning Perl, chapter6, exercise-2
3 # Date: 2012-01-16
4 # Author: xiaodongrush
5 #-----------------------------------------------------------#
6 use 5.010;
7 while(<>) {
8 chomp;
9 if(exists $word_hash{$_}) {
10 $word_hash{$_} += 1;
11 } else {
12 $word_hash{$_} = 1;
13 }
14 }
15 foreach(sort (keys %word_hash) ) {
16 say $_ . "\t\t" . $word_hash{$_};
17 }
18 #-----------------------------------------------------------#
ch6-ENV-hash.pl
1 #-----------------------------------------------------------#
2 # Source: Learning Perl, chapter6, exercise-3
3 # Date: 2012-01-16
4 # Author: xiaodongrush
5 #-----------------------------------------------------------#
6 use 5.010;
7
8 $max_key_len = 0;
9 $max_value_len = 0;
10 $len_limit = 35;
11 while(($key, $value) = each %ENV) {
12 if(length($key) < $len_limit && length($value) < $len_limit ) {
13 $max_key_len = $max_key_len > length($key) ? $max_key_len : length($key);
14 $max_value_len = $max_value_len > length($value) ? $max_value_len : length($value);
15 }
16 }
17 $format = "%-" . $max_key_len . "s , %-" . $max_value_len . "s\n";
18 printf $format, "key", "value";
19 foreach(sort(keys %ENV)) {
20 if( (length($_) < $len_limit ) && (length($ENV{$_}) < $len_limit )) {
21 printf $format, $_, $ENV{$_};
22 }
23 }
24 <STDIN>;
25 #-----------------------------------------------------------#
2 # Source: Learning Perl, chapter6, exercise-3
3 # Date: 2012-01-16
4 # Author: xiaodongrush
5 #-----------------------------------------------------------#
6 use 5.010;
7
8 $max_key_len = 0;
9 $max_value_len = 0;
10 $len_limit = 35;
11 while(($key, $value) = each %ENV) {
12 if(length($key) < $len_limit && length($value) < $len_limit ) {
13 $max_key_len = $max_key_len > length($key) ? $max_key_len : length($key);
14 $max_value_len = $max_value_len > length($value) ? $max_value_len : length($value);
15 }
16 }
17 $format = "%-" . $max_key_len . "s , %-" . $max_value_len . "s\n";
18 printf $format, "key", "value";
19 foreach(sort(keys %ENV)) {
20 if( (length($_) < $len_limit ) && (length($ENV{$_}) < $len_limit )) {
21 printf $format, $_, $ENV{$_};
22 }
23 }
24 <STDIN>;
25 #-----------------------------------------------------------#
3. 文件