in reply to Re: PERL modules named differently than the package won't export
in thread PERL modules named differently than the package won't export

Oh, yeah one more thing.

Most functions are not exported; they have to be explicitly referenced (to avoid too much namespace pollution). But there are two or three that are used so often it just makes more clutter to require explicit reference.

  • Comment on Re^2: PERL modules named differently than the package won't export

Replies are listed 'Best First'.
Re^3: PERL modules named differently than the package won't export
by dsheroh (Monsignor) on May 16, 2012 at 07:32 UTC
    I see. I guess that makes (some) sense.

    How about this approach, then:

    As Eliya mentioned, use Utils1; is equivalent to

    BEGIN { require Utils1; Utils1->import; }
    You should, therefore, be able to make the import from the Utils package transparent by editing Utils1.pm to do something along the lines of
    package Utils1; sub import { Utils->export_to_level(1, @_); } package Utils; ...
    This will (assuming I remembered the incantation correctly) make Utils1->import equivalent to Utils->import.


    Although, really, the better approach would likely be to put the two versions of Utils.pm into different library directories (e.g., /usr/local/devel/Utils.pm and /usr/local/stable/Utils.pm), then manipulating @INC (by setting PERL5LIB in the shell or with use lib in the code) so that each program will load the appropriate version.