2

谁能帮助我如何动态加载对象 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';

湾。方法:

no strict 'refs';
use Package::Stash;
my $stash = Package::Stash->new('main::FooBar');
my $coderef = $stash->get_symbol('&__new');
$coderef->()
4

1 回答 1

0

这有效:

my ($class, $method) = qw(FooBar roquet);
my $f = $class->new;
$f->$method;
于 2013-02-10T17:27:26.063 回答