オブジェクト FooBar を動的にロードし、roquet 関数を (動的に) 呼び出す方法について誰か助けてもらえますか? 私はPerlでこのスニペットを持っています:
#!/usr/bin/perl -w
use Inline Java => << 'End_Of_Java_Code';
class FooBar {
public FooBar(){}
public void roquet() {
System.out.println("HELLO!");
}
}
End_Of_Java_Code
use Data::Dumper;
use Class::Sniff;
my $sniff = Class::Sniff->new({class=>'FooBar'});
my $num_methods = $sniff->methods;
my $num_classes = $sniff->classes;
my @methods = $sniff->methods;
my @classes = $sniff->classes;
my @unreachable = $sniff->unreachable;
foreach my $method (@methods) {
if ( $method eq "roquet" ) {
print "$method\n";
}
}
次のアプローチとバリエーションを試しまし た。アプローチ:
use Module::Load
my $package = "main::FooBar";
load $package;
$package->new();
$package->$rflmethod;//where rflmethod is the variable: $rflmethod='roquet';
b. アプローチ:
no strict 'refs';
use Package::Stash;
my $stash = Package::Stash->new('main::FooBar');
my $coderef = $stash->get_symbol('&__new');
$coderef->()