コアダンプの数だけ強くなれるよ

見習いエンジニアの備忘log

ソースコードと完全に同じ文字列を出力する

実用性はゼロですが、お遊び感覚で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")");})