開発環境
- OS X Lion - Apple(OS)
- TextWrangler(Text Editor) (BBEditの機能制限無料版、light版)
- Script言語:Perl
『続・初めてのPerl 改訂版』(Randal L. Schwartz, brian d foy, Tom Phoenix 著、伊藤 直也、田中 慎司、吉川 英興 監訳、株式会社ロングテール/長尾 高弘 訳、オライリー・ジャパン、2006年、ISBN4-87311-305-9) の11章(オブジェクト入門), 11.11(練習問題)2を解いてみる。
2.
やり方の1つ。(「やり方は何通りもある」(TIMTOWTDI(There Is More Than One Way To Do It.)))
コード(TextWrangler)
#!/usr/bin/env perl
use strict;
use warnings;
{ package LivingCreature;
sub speak{
my $class = shift;
if(@_){
print "a $class goes @_!\n";
} else {
print "a $class goes ", $class->sound, "!\n";
}
}
}
{ package Person;
our @ISA = qw(LivingCreature);
sub sound { 'hum' }
}
{ package Animal;
our @ISA = qw(LivingCreature);
sub sound { die }
sub speak {
my $class = shift;
die if @_;
$class->SUPER::speak;
}
}
{ package Cow;
our @ISA = qw(Animal);
sub sound { "moooo" }
}
{ package Horse;
our @ISA = qw(Animal);
sub sound { "neigh" }
}
{ package Sheep;
our @ISA = qw(Animal);
sub sound { "baaaah" }
}
{ package Mouse;
our @ISA = qw(Animal);
sub sound { "squeak" }
sub speak{
my $class = shift;
Animal::speak($class);
print "[but you can barely hear it!]\n";
}
}
my @backyard = ();
while(1){
print "小動物(Cow/Horse/Sheep/Mouse)を入力\n";
chomp(my $animal = <STDIN7gt;);
unless($animal =~ /^(Cow|Horse|Sheep|Mouse|\s*)$/){
print "入力内容を確認してください。\n";
next;
}
last if $animal =~ /^\s*$/;
push @backyard, $animal;
}
for(@backyard){
$_->speak;
}
Person->speak;
Person->speak("Hello, World!");
入出力結果(Terminal)
$ perl sample.pl 小動物(Cow/Horse/Sheep/Mouse)を入力 Dog 入力内容を確認してください。 小動物(Cow/Horse/Sheep/Mouse)を入力 Cow 小動物(Cow/Horse/Sheep/Mouse)を入力 Horse 小動物(Cow/Horse/Sheep/Mouse)を入力 Sheep 小動物(Cow/Horse/Sheep/Mouse)を入力 Mouse 小動物(Cow/Horse/Sheep/Mouse)を入力 Sheep 小動物(Cow/Horse/Sheep/Mouse)を入力 Horse 小動物(Cow/Horse/Sheep/Mouse)を入力 a Cow goes moooo! a Horse goes neigh! a Sheep goes baaaah! a Mouse goes squeak! [but you can barely hear it!] a Sheep goes baaaah! a Horse goes neigh! a Person goes hum! a Person goes Hello, World!! $
0 コメント:
コメントを投稿