On Mon, 30 Jul 2001 22:32:54 -0400 (EDT), Sam Tregar wrote:
>On Mon, 30 Jul 2001, Dan Sugalski wrote:
>
>> When you actually use a module, the simple name (like IO) will be
>> internally expanded out to the three value thing. So if you have two
>> modules that each use a different version of the same module, they won't
>> interact because each will be dealing with a separate thing.
>
>How will this work with XS modules that load external libraries? Won't
>trying to load two versions of mysql.so cause symbol collision?
On Windows, it most certainly will. That OS simply refuses to load more
than one DLL with the same name, and it will load a second copy of the
first one, even if you used an overriding explicit path to the file.
For example, with simple file names, it's impossible to run a perl 5.005
and a perl 5.6 both using XML::Parser, at the same time.
This came up on comp.lang.perl.misc once, and Ilya Z. then wrote, IIRC,
that there's no reason why the DLL (if I may call it this way) should
have a name identical to the module name. His example was that on his
port, for OS/2, he added a (machine generated) versioning string.
I think this is a good time to generalise that practice.
--
Bart.