はじめに
「Javaで湯婆婆を実装してみる」のフォロワーネタです。
コーディングの息抜きとして書いてみました。
Perl版は既出なので、ワンライナーにしました。
(特にワンライナーっぽいテクニックとか無いですが…)
コード
perl -MEncode -le 'print "契約書だよ。そこに名前を書きな。";chomp(my $n=<STDIN>);die unless length($n);print "フン。$nというのかい。贅沢な名だねぇ。";my @l=split //,decode("utf8",$n);$n=encode("utf8",$l[int(rand(@l))]);print "今からお前の名前は$nだ。いいかい、$nだよ。分かったら返事をするんだ、$n!!"'
PerlはLinuxには大体入っているので、お手元のターミナルにコピペすれば動くと思います。
一点だけ、ターミナルの文字コードがutf8であることが前提です。
コードの解説
use Encode; # -MEncode相当
print "契約書だよ。そこに名前を書きな。";
chomp(my $n=<STDIN>);
# 名前を受け取れなかったら死にます。
die unless length($n);
print "フン。$nというのかい。贅沢な名だねぇ。";
# Perlの内部コードに変換した後で、文字ごとに分割します。
my @l=split //,decode("utf8",$n);
# 分割した文字列配列からランダムに一文字返却します。
$n=encode("utf8",$l[int(rand(@l))]);
print "今からお前の名前は$nだ。いいかい、$nだよ。分かったら返事をするんだ、$n!!"
実行結果
最後に
オンラインでサンプルを動かせると良かったんですが、「対話型のPerlが動く公開shell環境」が見つけられませんでした…。