Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I love this footnote so much:

> This feature does enable a neat quine: the Perl program “Illegal division by zero at /tmp/quine.pl line 1.”, when saved in the appropriate location, outputs “Illegal division by zero at /tmp/quine.pl line 1.” The reason for this behavior is left as an exercise for the reader.



The part that left my office in stitches:

> (To be fair to Perl, when perl is run with the -w flag to enable warnings, it does helpfully inform the user that at some point in the future, the Perl developers will most likely pick gggijgziifiiffif as a new reserved word:

>> Unquoted string "gggijgziifiiffif" may clash with future reserved word at - line 1.)


Knowing Larry, I believe he is currently working on a patch.


Larry left perl5 about 15 years ago, and nobody every will reserve random keywords like this. Keywords are very problematic in perl5 and are not needed all. You can add random new keywords at runtime, and you can add methods doing almost everything, like accepting blocks or functions, implementing most control structures.


     $ perl -MO=Deparse -e "Illegal division by zero at /tmp/quine.pl line 1."
    'division'->Illegal('zero'->by('at' / 'tmp' / 'quine' . line'->pl(1)));
     -e syntax OK


It's trying to divide "Illegal division by zero at /" by "tmp/quine.pl line 1." and "tmp/quine.pl line 1." evaluates to 0?


It is slightly more complicated than that :-) https://fanf.dreamwidth.org/131318.html

the actual parse is

  division->Illegal(
    zero->by(
      ((“at” / “tmp”) / “quine”)
       . line->pl(1.0)
    ))


I think it's equivalent to something like

  Illegal::division(by::zero(at/tmp/quine . pl::line(1.)))


Or "quine.pl line 1." Evaluates to 0?

Or should that be 0.0???


Yeah, I think it's both divisions. Both 'perl -e "in /tmp"' and 'perl -e "tmp/quine"' result in the same division-by-zero error.


> This feature does enable a neat quine: the Perl program “Illegal division by zero at /tmp/quine.pl line 1.”, when saved in the appropriate location, outputs “Illegal division by zero at /tmp/quine.pl line 1.” The reason for this behavior is left as an exercise for the reader.

For quines, see the chapter "Air on G's String", a dialogue between Achilles and the Tortoise in Douglas Hofstadter's book GODEL,ESCHER,BACH: AN ETERNAL GOLDEN BRAID.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: