3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Perlのワンライナーで湯婆婆を実装してみる

Last updated at Posted at 2020-11-12

はじめに

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!!"

実行結果

image.png

最後に

オンラインでサンプルを動かせると良かったんですが、「対話型のPerlが動く公開shell環境」が見つけられませんでした…。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?