2011年7月21日木曜日

開発環境

  • Mac OS X Snow Leopard (OS)
  • TextWrangler(Text Editor) (いずれはBBEditを入手したい!)
  • Script言語:Perl

『続・初めてのPerl 改訂版』(Randal L. Schwartz, brian d foy, Tom Phoenix 著、伊藤 直也、田中 慎司、吉川 英興 監訳、株式会社ロングテール/長尾 高弘 訳、オライリー・ジャパン、2006年、ISBN4-87311-305-9) の4章(リファレンス入門), 4.9(練習問題)、2を解いてみる。

 

2.

やり方の1つ。(「やり方は何通りもある」(TIMTOWTDI(There Is More Than One Way To Do It.)))

コード(TextWrangler)

#!/usr/bin/perl
use strict;
use warnings;

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

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

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);

入出力結果(Ternimal)

徐々にコードを記述する量が増えて、かつ楽しくなってきた!

0 コメント:

コメントを投稿