hi, On Monday 31 May 2004 16:50, Patrick LeBoutillier wrote: > nadim, > This is most certainly a package problem. Inline::Java will bind you > code in the current > package. Maybe un your case the package in not "main" when you require > the .pl file. I'm in package PBS::PBS and I evaluate this code:
#>>>>> start of file './Pbsfile.pl' #line 0 './Pbsfile.pl' package PBS::Runs::PBS_1 ; use strict ; use warnings ; use PBS::Constants ; use PBS::Shell ; use PBS::Output ; use PBS::Rules ; use PBS::Triggers ; use PBS::PostBuild ; use PBS::PBSConfig ; use PBS::Config ; use PBS::Check ; use PBS::PBS ; use PBS::Digest; PBS::Digest::AddFileDependencies('PBSFILE:./Pbsfile.pl') ; #line 1 './Pbsfile.pl' use Inline Java => <<'END_OF_JAVA_CODE' => DEBUG => 4; class Pod_alu { public Pod_alu(){ } public int add(int i, int j){ return i + j ; } public int subtract(int i, int j){ return i - j ; } } END_OF_JAVA_CODE #~ my $alu = (__PACKAGE__ . "::Pod_alu")->new ; my $alu = new Pod_alu() ; print($alu->add(9, 16) . "\n") ; # prints 25 print($alu->subtract(9, 16) . "\n") ; # prints -7 # load OK 1 ; #<<<<< end of file './Pbsfile.pl' > Try this test: > my $alu = new PBS::Runs::PBS_1::Pod_alu() ; That works but it's kind of bad news as the the package is allocated dynamicaly by the build system. writting this fixes it, but talk about ugly stuff! my $alu = (__PACKAGE__ . "::Pod_alu")->new ; I still fail to understand why I have I have to qualify 'new' as I execute it in the same package as the one where the Inline::Java stuff is. > or try putting > package main ; > at the beginning of the Pbsfile.pl file. Not a good idea in this case because it would change the package for the rest of the function calls (in the script) which have to be in a specific (dynamic) package. > In any case export the DEBUG option will show you what Inline::Java is > trying to do. hmmm, It didn't help me the least in this case but it's good to know where to switch on the light. Cheers, Nadim