The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use Test;

BEGIN { plan tests => 8 }

use Inline Python => Config => DIRECTORY => './blib_test';
use Inline Python => <<'END';

def check_for_sub(sub):
    try: 
        f = getattr(perl,sub)
        if type(f).__name__ == "_perl_sub": 
            print("Sub %s exists!" % sub)
            return 1
        else:
            print("%s is not a sub!" % sub)
            return 0
    except AttributeError:
        print("Sub %s not found!" % sub)
        return 0

def get_sub(sub):
    if check_for_sub(sub): return getattr(perl,sub)
    else: raise AttributeError("No such sub")

END

ok(1); #loaded

sub f { print "Hello from Perl\n"; ok(1); }

use Inline::Python qw(py_eval);

py_eval(<<END);
perl.use("Data::Dumper")
perl.f()
print(perl.Dumper({'neil': 0, 'laura': 1})), # suppress extra \n
perl.ok(1)
print(perl.CORE)
perl.ok(1)
print(dir(perl))
perl.ok(1)
t = get_sub('f')
t.flags = t.G_EVAL | t.G_KEEPERR
t()

perl.py_eval("print('Wow. Now that is weird')")
perl.ok(1)

END

ok(1)