Embed Perl in Go.
Switch branches/tags
Nothing to show
Pull request Compare This branch is 3 commits behind YSHCI:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
perl
.gitignore
README

README

sakool999의 수정(org member인 상태)


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