Heaven's Kitchen

○ PerlでHello World

そろそろ中間発表の準備で参ってきたので,現実逃避気味に日記でも書こうかと思いたちました。

こないだ研究室の開発合宿なるものに行ってきたのですが,そこで先輩に教えてもらったPerlのコード

''=~('"`_[[).[|`%,,/`[/[@$~)^##'^'
_$+)@@/^(@@@@@,@),@_#|^
')

これでHello Worldが出ます。これの仕組みは以下のような感じのようです。

eval('[[).[|`%,,/`[/[@$~)^'^'+)@@/^(@@@@@,@),@_#|');

例えばCで

main()
{
    int i;
    char *a = "\"`_[[).[|`%,,/`[/[@$~)^##";
    char *b = "\n_$+)@@/^(@@@@@,@),@_#|^\n";
    for (i=0;i<25;++i)
        putchar(a[i] ^ b[i]);
}

とかやってみると驚きの結果が。

べつにXORでなくてもいいので|や&で同じような

暗号がたくさんつくれるー,と思ったけど実装したら

後悔しそうなのでやめました。

Valid XHTML 1.0! Valid CSS!