diff --git a/lib/Inline/Perl5.pm6 b/lib/Inline/Perl5.pm6 index fae040a..bedabc8 100644 --- a/lib/Inline/Perl5.pm6 +++ b/lib/Inline/Perl5.pm6 @@ -736,6 +736,15 @@ BEGIN { } } ); + for Any.^methods>>.gist -> $name { + Perl5Object.^add_method( + $name, + method (|args) { + $.perl5.invoke($.ptr, $name, self, args.list, args.hash); + } + ); + } + Perl5Object.^compose; } class Perl5ModuleLoader { diff --git a/t/invoke.t b/t/invoke.t new file mode 100644 index 0000000..2122af8 --- /dev/null +++ b/t/invoke.t @@ -0,0 +1,25 @@ +#!/usr/bin/env perl6 + +use v6; +use Inline::Perl5; +use Test; + +my $p5 = Inline::Perl5.new; + +$p5.run: q:heredoc/PERL5/; + package Foo; + + sub new { + return bless {}; + } + + sub push { + return 'pushed'; + } + PERL5 + +my $foo = $p5.invoke('Foo', 'new'); + +is($foo.push, 'pushed'); + +done;