Quine を書いてみる、ヒアドキュメントを使わずに
ヒアドキュメントを使わずに Quine を書いてみた。予想どおりヒアドキュメントを使うよりもサイズが大きい。s///;print を使う技ではこれが限界なんだろうか。
$,=chr(39);$_='$,=chr(39);$_=u;s/u/$,$_$,/;print';s/u/$,$_$,/;print
[takeyuki@sunya ~]$ perl e.pl > b.pl; diff e.pl b.pl; wc -c e.pl 67 e.pl
文字列のクオートに、q★★ を使い、★の部分に特殊変数 $; の値であるところの ^\ を使ってみたらだいぶ短くなって、ヒアドキュメント版より短くなった。
$_=q^\$_=qu;s/u/$;$_$;/;print^\;s/u/$;$_$;/;print
^\ の部分は実際には 0x1c 一文字。
[takeyuki@sunya ~]$ perl e.pl > b.pl; diff e.pl b.pl; wc -c e.pl 47 e.pl
30 bytes 台にしないと golfer は名乗れない。