bradfitz / Campher
Embed Perl in Go. This works, but was a joke for a presentation. Don't use.
Stars: ✭ 123
Programming Languages
go
31211 projects - #10 most used programming language
What do you get when you cross a Camel with a Gopher?
Campher!
Perl in Go.
Example of the awesomeness / horror:
========= INSTALL
$ go get 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
Note that the project description data, including the texts, logos, images, and/or trademarks,
for each open source project belongs to its rightful owner.
If you wish to add or remove any projects, please contact us at [email protected].