-
Notifications
You must be signed in to change notification settings - Fork 16
bradfitz/campher
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
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
About
Embed Perl in Go. This works, but was a joke for a presentation. Don't use.
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published