Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Perl > Perl Misc > can perl modules be used by various versions of perl?

Reply
Thread Tools

can perl modules be used by various versions of perl?

 
 
garey
Guest
Posts: n/a
 
      05-25-2007
Hello -

I have an application that will move between two machines. It
will normally run on the first machine; if the machine or the
application fails, the application and the directory structure that
contains it will move to the second machine.

In the application I use several PERL modules. I have an
installation of PERL on each machine, and at the moment, both
installations are version 5.8.8.

My worry is that, if at some point the PERL versions
inadvertently get out of sync, the PERL modules will stop functioning
correctly, because the PERL modules only work with one version of
PERL.

So my question is 'what is the relation between a PERL module and
the PERL it was compiled with?'. Is there a wide range of PERL
versions a particular module will work with? or is the PERL module
limited to working only with the PERL in whose library it is found?

I can't find any documentation that states how this works,
probably because the answer is so obvious. But not to me.

Any help would be appreciated;

Garey Mills

 
Reply With Quote
 
 
 
 
brian d foy
Guest
Posts: n/a
 
      05-25-2007
In article <(E-Mail Removed) .com>,
garey <(E-Mail Removed)> wrote:

> So my question is 'what is the relation between a PERL module and
> the PERL it was compiled with?'.


It depends on the module. Pure Perl modules might not have a problem,
although syntax varies in minor versions as new features are
added.

Modules that relied on compiled components (e.g. XS, SWIG, etc) are
probably okay on different machines running the same versions of
everything (including the same operatiing system) that were compiled in
the same way. Perl's within a minor version release (5.8.6, 5.8.
should be okay.

Other than that, I would expect and plan on things not being compatible.

--
Posted via a free Usenet account from http://www.teranews.com

 
Reply With Quote
 
 
 
 
Tim S
Guest
Posts: n/a
 
      05-25-2007
garey wrote:

> Hello -
>
> I have an application that will move between two machines. It
> will normally run on the first machine; if the machine or the
> application fails, the application and the directory structure that
> contains it will move to the second machine.
>
> In the application I use several PERL modules. I have an
> installation of PERL on each machine, and at the moment, both
> installations are version 5.8.8.
>
> My worry is that, if at some point the PERL versions
> inadvertently get out of sync, the PERL modules will stop functioning
> correctly, because the PERL modules only work with one version of
> PERL.
>
> So my question is 'what is the relation between a PERL module and
> the PERL it was compiled with?'. Is there a wide range of PERL
> versions a particular module will work with? or is the PERL module
> limited to working only with the PERL in whose library it is found?
>
> I can't find any documentation that states how this works,
> probably because the answer is so obvious. But not to me.
>
> Any help would be appreciated;
>
> Garey Mills


Perl isn't compiled per-se (well not in the way that python is to a .pyc or
java to a .class). It is pseudo-compiled to perl bytecode upon every
invocation of the script[1].

As to version, with a little care it's not hard to have perl script that is
good for 5.6.1 through 5.8.8. You get some funnies like 5.6 doesn't like:

use constant
{
foo => 'bar',
bar => 'foo',
};

when it's OK for some later version, but:

use constant foo => 'bar';
use constant bar => 'foo';

is find on both.

Perl has a pretty good record on compatibility. When I was working at
Imperial College London, we had scripts that ran off NFS mounts that worked
fine across random perl versions on Linux and Solaris covering 5.6.x to
5.8.6.

XS modules may be more delicate, but not too dire.

This is why sysadmins tend to like perl: CPAN + a certain degree of
constancy makes for a reliable and useful language.

HTH

Tim

[1] Perl d00dz are probably going to say: what about B::Bytecode?
Don't care, sysadmins don't usually try that trick ;->
 
Reply With Quote
 
Joe Smith
Guest
Posts: n/a
 
      05-29-2007
garey wrote:

> So my question is 'what is the relation between a PERL module and
> the PERL it was compiled with?'. Is there a wide range of PERL
> versions a particular module will work with? or is the PERL module
> limited to working only with the PERL in whose library it is found?


For the most part, newer versions of Perl are upward-compatible - the
new version runs the old code just fine. Possible exceptions are binary modules.

When a new major version comes out (such as going from 5.6.x to 5.8.x),
modules written in C (or other language that creates a *.so file)
might not work until re-compiled for the new version.

Take a look at the output from

find /usr/lib/perl5 -name '*.so' -print

to see if any of the modules you're currently using fit into that category.
-Joe
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
What's with all the various versions of Firefox? kal@ewq.com Firefox 2 09-08-2011 02:46 PM
How to discover what various Browsers (and versions support)? Rob R. Ainscough ASP .Net 1 06-25-2005 01:16 AM
python versions of perl modules Earl Eiland Python 4 12-31-2004 04:58 AM
python versions of perl modules Earl Eiland Python 0 12-30-2004 10:00 PM



Advertisments