ソースコードと完全に同じ文字列を出力する
実用性はゼロですが、お遊び感覚でCとperlでやってみた。
Perlの場合
quine.pl
$_=q{ q[
* * * *
* * * *
* * *
* *
* Hello Quine *
* *
* *
* *
* *
*
]; print"\$_=q{$_};eval\n"};eval
実行結果
$ perl quine.pl
$_=q{ q[
* * * *
* * * *
* * *
* *
* Hello Quine *
* *
* *
* *
* *
*
]; print"\$_=q{$_};eval\n"};eval
Cの場合
quine.c
#define quine(x) main(){return puts(#x"\nquine("#x")");}
quine(#define quine(x) main(){return puts(#x"\nquine("#x")");})
実行結果
$ gcc -o quine quine.c
$ ./quine
#define quine(x) main(){return puts(#x"\nquine("#x")");}
quine(#define quine(x) main(){return puts(#x"\nquine("#x")");})
コメント