llaporte53 wrote on Fri Sep 21 17:48:12 MEST 2007:
EPIC pollutes @INC in adding resource’s directory ------------------------------------------------- When running or debugging a Perl module, EPIC pollutes @INC with the resource directory. It adds the directory in the beginning of the list. In consequence, you can’t import a standard Perl module (like Config.pm) if you have a module of the same name in your directory. I don’t known the real reason of adding the resource directory when ‘.’ is already in @INC! For example, I have a package MyPackage (It’s a directory) with a module named Config.pm and another named MyModule.pm that uses Config standard Perl module (but not MyPackage::Config). When you run MyModule.pm, the instruction ‘use Config;’ imports MyPackage::Config! I have the same problem when debugging a Perl script because the debugger imports Config. See whats_in_inc.pl below… Examples: MyModule.pm and Config.pm are in MyPackage directory. ------- MyModule.pm ------- #!/usr/bin/perl #### # @author: Laurent LAPORTE # @summary: Module using Config, with a *main* (for testing). # @date: 2007-09-21 #### use strict; package MyPackage::MyModule; use Config; sub printArchname() { print "archname is " . $Config{archname} . "\n"; # Ooops : Global symbol "%Config" requires explicit package name... } package main; MyPackage::MyModule::printArchname(); 1; ------- Config.pm ------- #!/usr/bin/perl #### # @author: Laurent LAPORTE # @summary: Config module in MyPackage package. # @date: 2007-09-21 #### use strict; package MyPackage::Config; sub getConfig() { return "The config of MyPackage"; } 1; ------- whats_in_inc.pl ------- use strict; print "'$_'\n" foreach (@INC); Configuration: The problem doesn’t exists in EPIC v0.5.33, I don’t know if it exists between 0.5.33 and 0.5.35, but it exists in v0.5.36 and v0.5.40… eclipse v3.2 or v3.3 perl v5.8.8 built for MSWin32-x86-multi-thread
Note: The above is an archived snapshot of a forum thread. Use the original thread at sf.net to post comments.