package main import ( "C" "fmt" "os" "sync" ) func main() {} var wg sync.WaitGroup //export Yaph func Yaph() { fmt.Println("Every day I get in the queue") fmt.Println("To get on the bus that takes me to you") } //export Acme func Acme() { wg.Add(1) go func() { defer wg.Done() fmt.Println("I guess i'm a closure") fmt.Println (os.Getpid()) }() } //export Wait func Wait() { wg.Wait() fmt.Println("All async goroutines have terminated") } #### #!/usr/bin/env perl use strict; use warnings; use FFI::Platypus; use feature qw ( say ); say qq($0 $$); my $ffi = FFI::Platypus->new( api => 1 ); $ffi->lib('./yaph.so'); $ffi->attach(Yaph => []); $ffi->attach(Acme => []); $ffi->attach(Wait => []); Yaph(); Acme() for 1..300; Wait(); END { say qq(Too much, Magic Bus!) for 1 .. 3; } __END__