secce 发表于 2015-12-29 09:14:43

Perl中级第四章课后习题

  1.下列表达式各表示什么不同的含义:
$ginger->   
${$ginger}   
$ginger->->   
${$ginger->}



除第2个表示数组的元素,其他的都表示相同的意义
  
  4. 9. 2. 练习2
运用书中最后那个版本的check_required_items , 写一个子程序
check_items_for_all , 把一个散列引用作为惟一参数.这个散列引用的键是在
Minnow 船上的所有乘客, 其对应的值是他们各自想带上船的东西。
比如, 这个散列引用可以是这样的:
my @gilligan =. . . gilligan items. . . ;
my @skipper =. . . skipper items. . . ;
my @professor =. . . professor items. . . ;
my %all = (
Gilligan => \@gilligan,
Skipper => \@skipper,
Professor => \@professor,
);
check_items_for_all(\%all);
我们新建的那个子程序要调用check_required_items 来为散列中每个人更新其
必需的装备清单。



my @gilligan = qw(red_shirt hat lucky_socks water_bottle);
my @skipper = qw(blue_shirt hat jacket preserver sunscreen);
my @professor = qw(sunscreen water_bottle slide_rule batteries radio);
my %all = (
Gilligan => \@gilligan,
Skipper => \@skipper,
Professor => \@professor,
);
check_items_for_all(\%all);

sub check_items_for_all {
my $all = shift ;
foreach my $person ( keys %{$all} ) {
check_required_items($person,$all->{$person});
}

}

sub check_required_items{
my $who = shift ;
my $items = shift;
my @required = qw(preserver sunscreen water_bottle jacket);
my @missing = ( );
foreach my $item (@required) {
unless ( grep $item eq $_ ,@$items ) {
print "$who is missing $item. \n";
push @missing,$item;
}
}

if (@missing) {
print "Adding @missing to @$items for $who. \n";
push @$items,@missing;
}

}
页: [1]
查看完整版本: Perl中级第四章课后习题