MegaZone (zonereyrie) wrote,

  • Mood:
  • Music:

Perl questions on 'use' inheritance

I've been out of serious Perl coding for a while, and I started in Perl 4 (require) days, and never had to do anything too fancy with 'use' before, so I'm seeking wisdom. OK, for the existing ASP and ColdFusion versions of the code, we have a global 'include' file that includes the various files, then each script need only include that file to access the functions, etc.

<!-- #INCLUDE FILE = "pcConstants.asp" -->
<!-- #INCLUDE FILE = "pcFunctions.asp" -->
<!-- #INCLUDE FILE = "pcErrors.asp" -->
<!-- #INCLUDE FILE = "pcXML.asp" -->
<!-- #INCLUDE FILE = "Merchant.asp" -->
<!-- #INCLUDE FILE = "Kiosk.asp" -->

I discovered that doing a similar thing in Perl, with 'use', does not work. If I 'use' the function files in a global file, like '', then 'use pcGlobal' in other files, the namespace isn't inherited, so I can't just call functions from the function files in the current file without explicitly specifying the package name - which makes the include file pointless. Right now I'm just doing a 'use' on each function file every place it is needed instead. But, for purposes of keeping each implementation as much like the others as possible, if I can find the magic to make the include file work, I'll take it.

The other problem I have is that neither ASP nor CF seem to have a problem with recursion. Say a routine in pcFunctions is used in Merchant, and a routine in Merchant is used in pcFunctions. In ASP and CF, both of these files are included in pcInclude, and both of them them include pcInclude. So no problem, the functions are all in a flat namespace and the calls work just dandy.

Perl got REALLY unhappy when I tried to do 'use Merchant' in pcFunctions, and 'use pcFunctions' in Merchant - it recurses. The work around for now is doing 'use pcFunctions' in Merchant, and then using the explicit package name on the calls in pcFunctions (Merchant::*) instead of doing the include. Is this the best way to handle it?

  • Post a new comment


    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded