Shogo's Blog

Feb 23, 2021 - 1 minute read - polyglot go golang perl

改: PerlとGolangで実行できるPolyglot書いてみた

仕事をしているときにふとひらめいた。

文字列置換の s/// に使う記号はダブルクオーテーションでも行ける!

package main;

import (s"fmt"/*");
sub import { print "Hello macotasu"; }
__END__
*/)
func main() { s.Println("Hello macotasu") }
package main;

import (s"fmt"/*");
sub import { print "Hello macotasu"; }
__END__
*/)
func main() { s.Println("Hello macotasu") }

Go で dot import をしなければならない、という制限がなくなるので、自由度が上がりました。

package main;

import (s"fmt"/*");
sub import { print "Hello macotasu"; }
__END__
*/)
import "math"
func main() { s.Println("Hello macotasu", math.Pi) }

もし万が一 Go でも Perl でも動作するコードを書かないと行けないときでもこれなら安心です。 ぜひご利用ください。

おまけ

明日使えるムダ知識をあなたへ。

これでもコンパイル通る。 https://play.golang.org/p/r4awYWmXolN

package main

import ()
const ()
var ()

func main() {
}