Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Embed Perl in Go.

branch: master
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
Something went wrong with that request. Please try again.