Embed Perl in Go. This works, but was a joke for a presentation. Don't use.
Go C Makefile
Latest commit 1f8f057 May 5, 2016 @bradfitz Merge pull request #3 from quentinmit/master
Update for Go 1.6
Permalink
Failed to load latest commit information.
perl Update CFLAGS and LDFLAGS to build on both Darwin and Linux May 4, 2016
.gitignore
README

README

What do you get when you cross a Camel with a Gopher?

Campher!

Perl in Go.

Example of the awesomeness / horror:

=========
 INSTALL
=========

$ goinstall https://github.com/bradfitz/campher

=========
 EXAMPLE
=========

package main

import (
	"fmt"
	"strings"

	"github.com/bradfitz/campher/perl"
)

func main() {
	p := perl.NewInterpreter()
	p.Eval(`$foo = "bar";`)
	fmt.Println("foo is:", p.EvalString("$foo"))

	cv := p.Eval(`sub { my ($a1, $a2, $func) = @_; $func->($a1, $a2); }`).CV()
	var ret *SV
	p := perl.NewInterpreter()
	foo := p.Eval(`$foo = sub {
 my ($op, $v1, $v2) = @_;
 return "Perl says: " . $op->($v1, $v2);
};`)
	concat := func(a, b string) string { return a + b }
	fmt.Println("concat:", foo.CV().Call(concat, "foo", "bar"))

	base := 0
	add := func(a, b int) int {
		base++
		return a + b + base
	}
	fmt.Println("add:", foo.CV().Call(add, 1, "40"))
	fmt.Println("add:", foo.CV().Call(add, 1, "40"))
}


================
 EXAMPLE OUTPUT
================

concat: Perl says: foobar
add: Perl says: 42
add: Perl says: 43