はじめに
@Nemesisさんの書かれた記事『Javaで湯婆婆を実装してみる』に触発された記事が多数投稿されていますが、なんでか Perl はないようなので実装してみました。
コード
yubaba.pl
#!/usr/bin/perl
use strict;
use warnings;
use Encode;
my $name;
do {
print "契約書だよ。そこに名前を書きな。\n";
$name = <STDIN>;
chomp($name) if defined($name);
} while !defined($name) || $name eq "";
print "フーン。$nameというのかい。贅沢な名だね。\n";
my $newName = encode('utf-8', substr(decode('utf-8', $name), rand(length(decode('utf-8', $name))), 1));
print "今からお前の名は$newNameだ。いいかい、$newNameだよ。分かったら返事をするんだ、$newName!!\n";
妥協したところ
名前の入力を
$name = <STDIN>;
として EOF を入力すると $name の内容が未定義となり、そのまま処理を続けるとみっともない警告がでるだけで湯婆婆がクラッシュしてくれないので不本意ながら有効な名前が入力されるまで繰り返すようしています。まあ、Wandbox で実行するとその内湯婆婆は Kill されるので良しとしましょう。
契約書だよ。そこに名前を書きな。
契約書だよ。そこに名前を書きな。
契約書だよ。そこに名前を書きな。
契約書だよ。そこに名前を書きな。
契約書だよ。そこに名前を書きな。
~ 略 ~
契約書だよ。そこに名前を書きな。
契約書だよ。そこ�
Killed
おわりに
おわりです。