Похоже, что передача хэшей Perl в Java не поддерживается напрямую.Вот пример того, как вы можете обойти эту проблему, передав вместо этого хэш-ключи и значения в виде массивов:
use Inline Java => <<'END' ;
import java.util.* ;
class Pod_101 {
public Pod_101() {
}
public HashMap get_hash (String keys[], Integer vals[] ){
HashMap<String, Integer> hash = new HashMap<>() ;
for(int i= 0; i < keys.length; i++){
hash.put(keys[i], vals[i]);
}
return hash;
}
public Integer evaluate(HashMap<String, Integer> h, String foo){
return h.get("input") ;
}
}
END
my $obj = Pod_101->new() ;
my %data = ('input' => 45, 'Lisa' => 30, 'Kumar' => 40);
my $h = $obj->get_hash( [keys %data], [values %data]) ;
my $val = $obj->evaluate($h, "\${input*12}");
print "$val\n";
Вывод :
45