- check to see if a subroutine in the library is defined() - if not, delete() the library name from %INC - require() the library
This corrects the behavior we were seeing quite well, without much overhead for recompilation. Again, the case was:
- registry script foo.pl - registry script bar.pl - library lib.pl - both scripts require() the library
Best,
Matthew
On Feb 8, 2005, at 11:52 AM, Joe Schaefer wrote:
Matthew Berk <[EMAIL PROTECTED]> writes:
Apologies in advance for the conceptual nature of this inquiry.
I have two chunks of code that are being run as separate scripts under Registry. Both are using require() (I know, I know) to pull in a library of subroutines.
If you're abusing require() as a means of adding external subroutines directly into your script, then that's not going to work with Registry. One thing that works, I think, would be to use a package declaration at the start of the library, and change the script to call those subroutines by their package-qualified names:
old lib: sub foo {} ... new lib: package Foo; sub foo{} ... old script: require $mylib; foo(4); ... new script: require $mylib; Foo::foo(4); ...
This may not be the best solution, but I'm sure this issue is well documented somewhere on the perl.apache.org site.
-- Joe Schaefer